On 10/22/16 12:04 AM, p...@highoctane.be wrote:
We need some easy to use gem-style installer on the command line.
Phil,

Since I am not really familiar with ruby, I'm not sure what you mean by "gem-style installer on the command line"?

Depending upon what you mean, I think I agree:)

For GsDevKit_home[1], I have arranged for bash scripts that can be used for building both stones and clients for GemStone. Here are the example scripts for Tugrik[2]:

|# Create Tugrik stone createStone -u http://gsdevkit.github.io/GsDevKit_home/Tugrik.ston -i Tugrik -l Tugrik Tugrik 3.3.0 # Create Tugrik Pharo5.0 client createClient -t pharo tugrik -l -v Pharo5.0 -z $GS_HOME/shared/repos/Tugrik/.smalltalk.ston|


The Tugrik.ston file is a tODE object looks like the following[1] when materialized (basically a Metacello load script with additional info):

  ^ TDProjectSpecEntryDefinition new
    baseline: 'Tugrik'
      repository: 'github://dalehenrich/Tugrik:master/repository'
      loads: #('default');
    installScript: '
project install --local --url=http://gsdevkit.github.io/GsDevKit_home/MongoTalk.ston
      project clone --https --local Tugrik';
postLoadScript: 'mount @/sys/stone/dirs/Tugrik/gsdevkit/tode /home tugrik';
    status: #(#'inactive');
    locked: false;
    yourself

Their are fields for comments and a project url as well ... obviously other fields are possible ... the cool thing about this is that is a specification for a load rather than a Smalltalk load expression ... which means the repository can easily be re-targetted or the loads list changed, etc.

Since Pharo doesn't have tODE:), I leverage the SmalltalkCI[4] configuration file for Tugrik[5], which looks like this:

  SmalltalkCISpec {
  #loading : [
    SCIMetacelloLoadSpec {
      #baseline : 'Tugrik',
      #load : [ 'CI' ],
      #onWarningLog : true,
      #directory : 'repository',
      #platforms : [ #gemstone, #pharo ]
    }
  ],
  #configuring : [
    SCIGemStoneServerConfigSpec {
     #defaultSessionName : 'Tugrik',
     #platforms : [ #gemstoneClient ]
    }
  ]
 }

Very similar information, but has the advantage of being usable in GemStone, Squeak and Pharo ... I have an option for creating stones using a SmalltalkCI configuration file as well ...

I've been thinking that I could add a MetacelloProjectLoadSpecification class to Metacello that is meant to be passed around as an object in STON format that combines the good bits of the TDProjectSpecEntryDefinition with the good bits of the SCIMetacelloLoadSpec and be available in GemStone, Pharo and Squeak ... then you'd just send #load to the object to trigger the install ...

Is there anything in the "gem-style installer on the command line"that I'm missing? Am I completely off-base?

Dale

[1] https://github.com/GsDevKit/GsDevKit_home#open-source-development-kit-for-gemstones-64-bit-
[2] https://github.com/dalehenrich/Tugrik#create-tugrik-stone-and-client
[3] https://github.com/GsDevKit/GsDevKit_home/blob/gh-pages/Tugrik.ston
[4] https://github.com/hpi-swa/smalltalkCI#smalltalkci---
[5] https://github.com/dalehenrich/Tugrik/blob/master/.smalltalk.ston

Reply via email to