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