That's cool. We will start using it soon.

Usman


On Tue, Jan 29, 2013 at 12:39 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Hi guys

I finished to find a stupid bug today. Now the moose reloader works.
The idea is that you can freeze a complete Moose tools and be able to take a 1.4 image and reload all the packages
that were loaded when you snapshot it.

I could reload the latest version of Moose in a 1.4 image.
I published the result on ConfigurationOfMoose.


Gofer new
          url: 'http://smalltalkhub.com/mc/StephaneDucasse/MooseReloader/main'
          username:  ''
          password: '';
     package: 'ReloaderForMoose';
     load



Here is the comment of this class.



I'm a kind of saver/loader that knows how to save and load list of packages by recursively navigating metacello configurationOf. To work I need a metacello record and a place to save package version.

Here are examples to create a spec of packages to be saved.
===========================================
In an image containing the loaded configuration of the tools you want to version execute the following:

Reloader new
        configurationRecordInput: (((Smalltalk globals at: #ConfigurationOfMoose) project version: 'default') ignoreImage: true; record) ;
        repositoryClass: MooseConfigurationRepositoryForPharo14;
        publishNewVersion

Reloader new
        configurationRecordInput: (((Smalltalk globals at: #ConfigurationOfMoose) project version: 'default') ignoreImage: true; record) ;
        repositoryClass: ConfigurationOfMoose;
        publishNewVersion

It will produce a method called scriptXxx in the repositoryClass you specify.
Here is an example of such method.


script5

        ^ #(
                #('ConfigurationOfFame-StephaneDucasse.6.mcz'  'http://www.squeaksource.com/Fame/'  'ConfigurationOfFame' )
                #('ConfigurationOfMooseAlgos-TudorGirba.28.mcz'  'http://www.squeaksource.com/MooseAlgos/'  'ConfigurationOfMooseAlgos' ) ......
        )


You can then use this method as follows, for example in a ConfigurationOf you can

flatVersion47: spec
        <version: '4.7-flat'>

        spec for: #common do: [
                self populateSpec: spec with: self script5 ]

Note that the populateSpec:  with: is generated when necessary.


Reloading.
===================================
In another image you can reload the configuration in two different ways:
either by using metacello or by using the reloader.

Using metacello is simple if you created a method similar to
flatVersion47: spec
        <version: '4.7-flat'>

        spec for: #common do: [
                self populateSpec: spec with: self script5 ]

        just execute

(ConfigurationOfMoose project version: '4.7-flat') load



If you do not use a configurationOf you can simply invoke the method reload: with the number of the script

using the method

        reload: aNumber
                and it will load all the packages you previously specified.

        reloadLatest
                will load the latest script version

Typical use cases are:
------------------------------------
Reloader new
        repositoryClass: MooseConfigurationRepositoryForPharo14;
        reload: 2

Reloader new
        repositoryClass: SynectiqueCaseOneConfigurationRepository;
        publishNewVersion

Reloader new
        repositoryClass: SynectiqueCaseOneConfigurationRepository;
        loginSpecification: {{ '*squeaksource*' . 'sd' . 'xyxyx'} . { '*ss3*' . 'StephaneDucasse' . 'xxxx'} . { '*' . '' . ''}};
        reload: 2



===================================================
Implementation Notes.
First version fully working on metacello records.

Let me know if it works for you.

Stef


_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev