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

Reply via email to