Diego,

You raise some good points here ... In the Metacello Scripting API, I have 
added  some capabilities that just might fill the bill.

For example you can write the following expression:

  Metacello image
    configuration: 'MyProject';
    version: '1.0.1';
    onUpgrade: [:ex | ex deny];
    load.

The onUpgrade block is evaluated whenever Metacello detects an upgrade of a 
project ... the exception is an instance of MetacelloResolveProjectUpgrade 
which is Notification that provides information about the current in-image 
project (version name, etc.) and the proposed incoming version, so you can be 
very fine grained in your control.

In addition there are #onDowngrade: and #onConflict: variants as well..

The Metacello Scripting API needs to be ported to Pharo 2.0 (Christophe and I 
are working on this ... I am very busy right now so I won't be moving fast 
here:), but it does run fine in GemStone, Pharo1.1-1.4, and Squeak4.3-4.5 ...

I haven't release the Metacello Scripting API, because I just haven't the kind 
of feedback that I'd like when introducing a new API like this (if you look 
closely at the above expression, you might have several questions about details 
of the API). There are a number of folks that are using the Metacello Scripting 
API, but I haven't gotten enough bug reports to tell me that folks are really 
beating on it:). I've been using it myself for about 8 months, but I work in a 
limited number of use cases. 

Now that folks like you are asking for features that I think I've addressed in 
the Scripting API, perhaps I can start getting some meaningful feedback. If 
your projects are on Pharo2.0, you'll have to wait for Christophe and I to 
finish the port, otherwise you can take it for a spin[1] (there is some 
documentation as well) and let me know what makes sense to you and what doesn't.

I'm prepared for the fact that when folks take a look at the Scripting API, I 
will need to make significant changes to the API so you should be prepared for 
that as well:)

Dale

[1] https://github.com/dalehenrich/metacello-work/blob/master/README.md

----- Original Message -----
| From: "Diego Lont" <diego.l...@delware.nl>
| To: Pharo-project@lists.gforge.inria.fr
| Sent: Friday, April 19, 2013 1:36:37 AM
| Subject: Re: [Pharo-project] Metacello configuration conventions
| 
| Hi all,
| 
| I just want to add another thought to the convention discussion.
| 
| In my work process I have two different activities when deploying new code:
|       1) I want to deploy a patch, that only includes the bugfix.
|       2) I want to deploy a release, that includes all updates.
| 
| In the first I usually do not want to upgrade dependencies. If dependencies
| need upgrading I want to make this decision manually.
| 
| In the second I usually want to upgrade dependencies. If dependencies need
| upgrading this should be done automatically.
| 
| Metacello supports both, but not at the same time. Either you mark your
| configuration with fixed versions (best for patches) or with symbolic
| versions (best for releases).
| 
| Currently we have a baseline, a version, and groups that I can edit. I think
| I want a third thing: the deployment, where I describe certain deployment
| strategies. So that I can say:
|       ConfigurationOfMyProject project stableVersion patch load
|       ConfigurationOfMyProject project stableVersion loadRelease
| or something like this.
| 
| Cheers,
| Diego
| 

Reply via email to