(I hope this isn’t posted twice - I accidentally sent it from an address that 
wasn’t subscribed so this is a repost - apologies)

Hi Peter,

I’ve never had to use the provides: method even with fairly complex Baselines.

This is an example of the kind of thing I’ve been using:

baseline: spec
        <baseline>

        spec for #common do: [
                spec 
                        “Dependency on project with BaselineOf"
                         baseline: 'Seaside3' with: [ 
                                 spec 
                                         loads: #('Core' 'Development' 'Zinc'); 
                                         repository: 
'github://SeasideSt/Seaside:master/repository 
<github://SeasideSt/Seaside:master/repository>' ];
                
                        “Dependency on project with ConfigurationOf (note the 
version)”
                        configuration: ‘Magritte3’ with: [ 
                                spec
                                        versionString: '3.5.2';
                                        repository: 
'http://www.smalltalkhub.com/mc/Magritte/Magritte3/main 
<http://www.smalltalkhub.com/mc/Magritte/Magritte3/main>' ];

                “Now define my project packages”
                package: 'MyProject-Model' with: [ 
                        spec requires: #(‘Magritte3') ]; 
                package: ‘MyProject-UI' with: [ 
                        spec requires: #('MyProject-Model’ 'Seaside') ];
                package: ‘MyProject-Tests-Model’ with: [
                        spec requires: #('MyProject-Model’) ];

                “Now define groups for convenience. Groups can load 
dependencies, packages, or other groups”
                group: ‘Model' with: #(‘MyProject-Model’);
                group: ‘UI' with: #(‘MyProject-UI’);
                group: ‘Tests’ with: #(‘MyProject-Tests’)

                “Metacello will load the default group unless you specify 
otherwise"
                group: ‘default’ with:  #(Model’ ‘UI’);

                “Other possible convenience groups”
                group: ‘Development’ with:  #(Model’ ‘UI’ ’Tests’);
                group: ‘Production’ with:  #(Model’ ‘UI’)
        ]


Then you can load groups like:

Metacello new
        baseline: ‘MyProject’;
        repository: ‘github://MyGitHubUser/MyProject:master/repository' 
<github://MyGitHubUser/MyProject:master/repository'>
        loads: #(‘Development’);
        load

Hope this helps :)

Cheers,

Jupiter
> On 27 Feb 2018, at 9:30 am, Peter Uhnák <i.uh...@gmail.com> wrote:
> 
> Hi,
> 
> I'm trying to define a dependency on a group of BaselineOf.
> 
> specifically #core of github://pharo-graphics/Bloc/src.
> 
> I've looked at this 
> https://github.com/Metacello/metacello/blob/master/docs/GettingStartedWithGitHub.md#create-baseline
>  
> <https://github.com/Metacello/metacello/blob/master/docs/GettingStartedWithGitHub.md#create-baseline>
> 
> which recommends using import:provides:
> 
> baseline: spec
>   <baseline>
> 
>   spec for: #common do: [
>     "Sample defines the group 'default'"
>     spec baseline: 'Sample' with: [
>       spec repository: 'github://dalehenrich/Sample:master' ].
>     spec import: 'Sample' provides: #('default').
> 
>     "OtherSample *also* defines the group 'default'"
>     spec baseline: 'OtherSample' with: [
>       spec repository: 'github://dalehenrich/Sample:master' ].
>     spec import: 'OtherSample' provides: #('default').
> 
>     "'default' can now be successfully resolved, even though
>     both projects define the same name"
>     spec package: 'OtherProject-Core with: [
>       spec requires: 'default' ] ].
> 
> However this code is confusing... both Sample & OtherSample provide 
> `default`, so on what does `OtherProject-Core` actually depend?
> 
> In the examples here 
> https://github.com/Metacello/metacello/blob/master/docs/LockCommandReference.md
>  
> <https://github.com/Metacello/metacello/blob/master/docs/LockCommandReference.md>
>  there are groups with the name of the project in them ('External Core' 
> 'External Tests'), but this won't work if I don't control the project I am 
> loading, plus it feels like a hackish workaround.
> 
> Also, can it be unified with the way ConfigurationOf works?
> 
> 
> Thanks,
> Peter

Reply via email to