Thank you all... I guess I must have been doing something wrong, because I've tried `loads:` before.

But it is working now.

Thanks!
Peter

On Tue, Feb 27, 2018 at 11:56 AM, Jupiter Jones <jupiter.jones@mail.com> wrote:
(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' ];
���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' ];

���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'
loads: #(���Development���);
load

Hope this helps :)

Cheers,

Jupiter
On 27 Feb 2018, at 9:30 am, Peter Uhn��k <i.uhnak@gmail.com> wrote:

Hi,

I'm trying to define a dependency on a group of BaselineOf.

specifically #core of github://pharo-graphics/Bloc/src.


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 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