As an offshoot of the recent discussion with Steph and Christophe, I
though it would be interesting to show folks what a BaselineOf
specification would look like if it were written out in STON format.
Here's a baseline spec extracted from the BaselineOfSton for GemStone
in the GsDevKit/ston project[1]:
spec
for: #'common'
do: [
spec
package: 'STON-Core';
package: 'STON-UTF8-Core' with: [ spec requires: 'STON-Core' ];
package: 'STON-Tests' with: [ spec requires: 'STON-Core' ];
package: 'STON-UTF8-Tests' with: [ spec requires:
'STON-UTF8-Core' ];
yourself.
spec
group: 'default' with: #('Core' 'UTF8');
group: 'Core' with: #('STON-Core');
group: 'UTF8' with: #('STON-UTF8-Core');
group: 'Tests' with: #('STON-Tests' 'STON-UTF8-Tests');
yourself .
spec
package: 'STON-Core' with: [ spec includes:
#('STON-GemStone-Core') ];
package: 'STON-GemStone-Core' with: [ spec requires:
#('STON-Core') ];
package: 'STON-Tests' with: [ spec includes:
#('STON-GemStone-Tests') ];
package: 'STON-GemStone-Tests' with: [ spec requires:
#('STON-Tests') ];
yourself ]
I spelunked around a bit in the Metacello project data structure and
extracted this list using a simple workspace[2] to produce this STON output
[
MetacelloPackageSpec {
#name : 'STON-GemStone-Core',
#requires : [
'STON-Core'
]
},
MetacelloGroupSpec {
#name : 'UTF8',
#includes : [
'STON-UTF8-Core'
]
},
MetacelloGroupSpec {
#name : 'Tests',
#includes : [
'STON-Tests',
'STON-UTF8-Tests'
]
},
MetacelloPackageSpec {
#name : 'STON-UTF8-Core',
#requires : [
'STON-Core'
]
},
MetacelloPackageSpec {
#name : 'STON-Tests',
#requires : [
'STON-Core'
],
#includes : [
'STON-GemStone-Tests'
]
},
MetacelloPackageSpec {
#name : 'STON-Core',
#includes : [
'STON-GemStone-Core'
]
},
MetacelloGroupSpec {
#name : 'default',
#includes : [
'Core',
'UTF8'
]
},
MetacelloGroupSpec {
#name : 'Core',
#includes : [
'STON-Core'
]
},
MetacelloPackageSpec {
#name : 'STON-UTF8-Tests',
#requires : [
'STON-UTF8-Core'
]
},
MetacelloPackageSpec {
#name : 'STON-GemStone-Tests',
#requires : [
'STON-Tests'
]
}
]
The #for:do: specification is not present (that information was stripped
during the version creation process), but that type of information could
easily be added back in ... everything else is present and accounted for ...
Dale
[1] https://github.com/GsDevKit/ston
[2] https://gist.github.com/dalehenrich/4450b4aca405616b1891