MetacelloProjectRegistration.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 05 Sep 2012 16:35:54 +0000
changeset 7 759ff40b4754
parent 3 504152ada1fc
permissions -rw-r--r--
- stx_goodies_metacello_stx added: #extensionMethodNames changed: #classNamesAndAttributes #preRequisites
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     1
"{ Package: 'stx:goodies/metacello' }"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     2
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     3
Object subclass:#MetacelloProjectRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     4
	instanceVariableNames:'projectName configurationProjectSpec baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     5
		loadedInImage locked mutable'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     6
	classVariableNames:'Registry'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     7
	poolDictionaries:''
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     8
	category:'Metacello-Core-Scripts'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     9
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    10
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    11
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    12
!MetacelloProjectRegistration class methodsFor:'instance creation'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    13
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    14
fromMCBaselineProjectSpec: aProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    15
    ^ self new
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    16
        projectName: aProjectSpec name;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    17
        baselineProjectSpec: aProjectSpec;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    18
        yourself
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    19
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    20
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    21
fromMCConfigurationProjectSpec: aProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    22
    ^ self new
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    23
        projectName: aProjectSpec name;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    24
        configurationProjectSpec: aProjectSpec;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    25
        yourself
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    26
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    27
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    28
!MetacelloProjectRegistration class methodsFor:'accessing'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    29
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    30
baselineClasses
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    31
    "Return a set of the Metacello baseline classes that have been loaded into the image."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    32
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    33
    "self baselineClasses"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    34
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    35
    ^ BaselineOf allSubclasses
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    36
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    37
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    38
baselineProjectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    39
    "MetacelloProjectRegistration baselineProjectSpecs"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    40
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    41
    ^ self registry baselineProjectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    42
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    43
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    44
configurationClasses
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    45
    "Return a set of the Metacello configuration classes that have been loaded into the image."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    46
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    47
    "self configurationClasses"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    48
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    49
    | answer |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    50
    answer := IdentitySet new.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    51
    ConfigurationOf allSubclasses
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    52
        do: [ :cl | 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    53
            (cl == BaselineOf or: [ cl inheritsFrom: BaselineOf ])
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    54
                ifFalse: [ answer add: cl ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    55
    Object allSubclasses
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    56
        do: [ :cl | 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    57
            (answer includes: cl)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    58
                ifFalse: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    59
                    (([ cl isMetacelloConfig ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    60
                        on: Error
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    61
                        do: [ :ex | ex return: false ]) and: [ cl name asString beginsWith: 'ConfigurationOf' ])
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    62
                        ifTrue: [ answer add: cl ] ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    63
    ^ answer
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    64
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    65
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    66
configurationProjectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    67
    "MetacelloProjectRegistration configurationProjectSpecs"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    68
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    69
    ^ self registry configurationProjectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    70
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    71
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    72
primeRegistryFromImage
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    73
    "MetacelloProjectRegistration primeRegistryFromImage"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    74
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    75
    self registry primeRegistryFromImage
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    76
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    77
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    78
projectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    79
    "MetacelloProjectRegistration projectSpecs"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    80
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    81
    ^ self configurationProjectSpecs , self baselineProjectSpecs
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    82
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    83
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    84
registry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    85
    Registry ifNil: [ Registry := MetacelloProjectRegistry new ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    86
    ^ Registry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    87
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    88
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    89
registry: aMetacelloProjectRegistry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    90
    Registry := aMetacelloProjectRegistry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    91
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    92
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    93
resetRegistry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    94
    Registry := nil
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    95
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    96
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    97
!MetacelloProjectRegistration class methodsFor:'mutability'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    98
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    99
copyRegistryRestoreOnErrorWhile: aBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   100
    "install copy of registry for duration of <aBlock> execution."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   101
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   102
    "registrations will be copied on write during <aBlock> execution."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   103
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   104
    "if <aBlock> does not return control to this context, revert to the original
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   105
	version of the registry. Otherwise leave the new copy installed."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   106
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   107
    | oldRegistry newRegistry |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   108
    oldRegistry := self registry.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   109
    newRegistry := self registry copy.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   110
    self registry: newRegistry.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   111
    aBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   112
        ensure: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   113
            "install old version of registry"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   114
            self registry: oldRegistry ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   115
    self registry: newRegistry	"if control returned, install newRegistry"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   116
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   117
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   118
copyRegistryWhile: aBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   119
    "install copy of registry for duration of <aBlock> execution."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   120
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   121
    "registrations will be copied on write during <aBlock> execution."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   122
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   123
    "Unconditionally revert to the original
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   124
	version of the registry. Otherwise leave the new copy installed."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   125
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   126
    | oldRegistry newRegistry |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   127
    oldRegistry := self registry.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   128
    newRegistry := self registry copy.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   129
    self registry: newRegistry.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   130
    aBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   131
        ensure: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   132
            "install old version of registry"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   133
            self registry: oldRegistry ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   134
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   135
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   136
!MetacelloProjectRegistration class methodsFor:'querying'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   137
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   138
projectSpecForClassNamed: aClassName ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   139
    ^ self registry projectSpecForClassNamed: aClassName ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   140
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   141
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   142
registrationForClassNamed: aClassName ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   143
    ^ self registry registrationForClassNamed: aClassName ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   144
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   145
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   146
registrationForProjectSpec: aProjectSpec ifAbsent: absentBlock ifPresent: presentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   147
    | newRegistration |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   148
    newRegistration := aProjectSpec asProjectRegistration.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   149
    self registry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   150
        registrationFor: newRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   151
        ifPresent: [ :existing | ^ presentBlock value: existing value: newRegistration ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   152
        ifAbsent: [ ^ absentBlock value: newRegistration ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   153
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   154
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   155
!MetacelloProjectRegistration class methodsFor:'registration'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   156
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   157
registerProjectSpec: aProjectSpec ifPresent: presentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   158
    | newRegistration |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   159
    newRegistration := aProjectSpec asProjectRegistration.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   160
    ^ self registry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   161
        registrationFor: newRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   162
        ifPresent: [ :existing | presentBlock value: existing value: newRegistration ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   163
        ifAbsent: [ newRegistration registerProject ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   164
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   165
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   166
!MetacelloProjectRegistration methodsFor:'accessing'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   167
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   168
baseName
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   169
    ^ MetacelloScriptEngine baseNameOf: (configurationProjectSpec ifNil: [ baselineProjectSpec ]) className
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   170
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   171
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   172
baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   173
	^ baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   174
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   175
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   176
baselineProjectSpec: anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   177
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   178
    baselineProjectSpec := anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   179
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   180
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   181
baselineProjectSpecIfAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   182
    ^ baselineProjectSpec ifNil: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   183
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   184
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   185
baselineProjectSpecIfPresent: presentBlock ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   186
     ^ baselineProjectSpec ifNotNil: [ presentBlock cull: baselineProjectSpec ]  ifNil: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   187
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   188
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   189
configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   190
	^ configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   191
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   192
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   193
configurationProjectSpec: anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   194
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   195
    configurationProjectSpec := anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   196
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   197
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   198
configurationProjectSpecIfAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   199
    ^ configurationProjectSpec ifNil: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   200
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   201
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   202
configurationProjectSpecIfPresent: presentBlock ifAbsent: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   203
    ^ configurationProjectSpec ifNotNil: [ presentBlock cull: configurationProjectSpec ]  ifNil: absentBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   204
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   205
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   206
loadedInImage
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   207
    loadedInImage ifNil: [ loadedInImage := false ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   208
    ^ loadedInImage
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   209
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   210
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   211
loadedInImage: anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   212
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   213
    loadedInImage := anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   214
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   215
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   216
locked
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   217
    locked ifNil: [ locked := false ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   218
    ^ locked
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   219
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   220
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   221
locked: anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   222
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   223
    locked := anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   224
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   225
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   226
projectName
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   227
	^ projectName
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   228
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   229
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   230
projectName: anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   231
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   232
    projectName := anObject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   233
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   234
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   235
repositoryDescriptions
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   236
    ^ (self configurationProjectSpecIfAbsent: [ self baselineProjectSpec ]) repositoryDescriptions
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   237
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   238
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   239
version
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   240
    ^ (self configurationProjectSpecIfAbsent: [ ^ MetacelloMCBaselineProject singletonVersionName ]) versionString
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   241
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   242
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   243
!MetacelloProjectRegistration methodsFor:'comparision'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   244
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   245
= aRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   246
    aRegistration class == self class
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   247
        ifFalse: [ ^ false ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   248
    ^ (configurationProjectSpec registrationsCompareEqual: aRegistration configurationProjectSpec)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   249
        and: [ baselineProjectSpec registrationsCompareEqual: aRegistration baselineProjectSpec ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   250
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   251
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   252
hash
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   253
    ^ ((String stringHash: projectName initialHash: 0) bitXor: configurationProjectSpec metacelloRegistrationHash)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   254
        bitXor: baselineProjectSpec metacelloRegistrationHash
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   255
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   256
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   257
!MetacelloProjectRegistration methodsFor:'copying'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   258
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   259
postCopy
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   260
    super postCopy.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   261
    mutable := nil
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   262
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   263
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   264
!MetacelloProjectRegistration methodsFor:'lookup'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   265
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   266
lookupBaselineSpec
3
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   267
    
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   268
    baselineProjectSpec ifNotNil: [ ^ baselineProjectSpec ].
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   269
    ^ configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   270
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   271
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   272
lookupConfigurationSpec
3
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   273
    configurationProjectSpec ifNotNil: [ ^ configurationProjectSpec ].
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   274
    ^ baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   275
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   276
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   277
lookupSpec: aProjectSpec
3
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   278
    | spec |
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   279
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   280
    (spec := self configurationProjectSpec)
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   281
        ifNotNil: [ 
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   282
            spec className = aProjectSpec className
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   283
                ifTrue: [ ^ spec ] ].
3
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   284
    (spec := self baselineProjectSpec)
504152ada1fc fixed stc-compilability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   285
        ifNotNil: [ 
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   286
            spec className = aProjectSpec className
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   287
                ifTrue: [ ^ spec ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   288
    ^ nil
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   289
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   290
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   291
!MetacelloProjectRegistration methodsFor:'merging'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   292
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   293
merge: aProjectRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   294
    "should only be called from MetacelloProjectRegistration class>>mergeRegistration:with: ... merge is done when a spec has been loaded into the image"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   295
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   296
    "nil specs are ignored in the merge, otherwise aProjectRegistration specs win"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   297
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   298
    "(self hasMergeConflicts: aProjectRegistration)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   299
        ifTrue: [ ^ self error: 'Attempt to merge registrations with conflicts' ]."
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   300
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   301
    self shouldBeMutable.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   302
    configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   303
        ifNil: [ configurationProjectSpec := aProjectRegistration configurationProjectSpec ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   304
        ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   305
            aProjectRegistration configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   306
                ifNotNil: [ configurationProjectSpec := aProjectRegistration configurationProjectSpec ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   307
    baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   308
        ifNil: [ baselineProjectSpec := aProjectRegistration baselineProjectSpec ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   309
        ifNotNil: [ aProjectRegistration baselineProjectSpec ifNotNil: [ baselineProjectSpec := aProjectRegistration baselineProjectSpec ] ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   310
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   311
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   312
!MetacelloProjectRegistration methodsFor:'mutability'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   313
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   314
copyOnWrite: aBlock
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   315
    "assume that only registered projects are immutable ... otherwise you'll get an error"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   316
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   317
    | copy |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   318
    self class registry
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   319
        registrationFor: self
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   320
        ifPresent: [ :existing |  ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   321
        ifAbsent: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   322
            aBlock value: self.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   323
            ^ self ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   324
    self unregisterProject.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   325
    copy := self copy.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   326
    aBlock value: copy.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   327
    copy registerProject.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   328
    ^ copy
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   329
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   330
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   331
immutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   332
    mutable := false
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   333
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   334
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   335
isMutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   336
    mutable ifNil: [ ^ true ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   337
    ^ mutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   338
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   339
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   340
mutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   341
    mutable := true
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   342
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   343
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   344
shouldBeMutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   345
    self isMutable
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   346
        ifTrue: [ ^ self ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   347
    self error: 'Not allowed to modify an immutable object'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   348
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   349
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   350
!MetacelloProjectRegistration methodsFor:'printing'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   351
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   352
printOn: aStream
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   353
    | label versionString descriptions |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   354
    self
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   355
        configurationProjectSpecIfPresent: [ :spec | 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   356
            label := spec className.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   357
            versionString := spec versionString ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   358
        ifAbsent: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   359
            "baseline"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   360
            label := self baselineProjectSpec className.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   361
            versionString := '[baseline]' ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   362
    aStream
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   363
        nextPutAll: label;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   364
        space;
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   365
        nextPutAll: versionString.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   366
    (descriptions := self repositoryDescriptions) isEmpty
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   367
        ifTrue: [ ^ self ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   368
    aStream nextPutAll: ' from '.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   369
    descriptions size = 1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   370
        ifTrue: [ aStream nextPutAll: descriptions first ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   371
        ifFalse: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   372
            aStream nextPut: ${.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   373
            descriptions do: [ :description | aStream nextPutAll: description ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   374
            aStream nextPut: $} ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   375
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   376
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   377
!MetacelloProjectRegistration methodsFor:'querying'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   378
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   379
currentlyLoadedClassesInProject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   380
    | classes |
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   381
    classes := Set new.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   382
    self
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   383
        configurationProjectSpecIfPresent: [ :spec | classes addAll: spec currentlyLoadedClassesInVersion ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   384
        ifAbsent: [  ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   385
    self baselineProjectSpecIfPresent: [ :spec | classes addAll: spec currentlyLoadedClassesInVersion ] ifAbsent: [  ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   386
    ^ classes
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   387
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   388
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   389
!MetacelloProjectRegistration methodsFor:'registration'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   390
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   391
registerProject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   392
    "unconditionally register <newRegistration> ... use with care"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   393
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   394
    self class registry registerProjectRegistration: self
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   395
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   396
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   397
unregisterProject
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   398
    self class registry unregisterProjectRegistration: self
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   399
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   400
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   401
!MetacelloProjectRegistration methodsFor:'testing'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   402
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   403
canDowngradeTo: aProjectRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   404
    "true if there are no load conflicts
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   405
        OR
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   406
       if the load conflicts involved two cofigurations ONLY and a downgrade is allowed"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   407
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   408
    (self hasLoadConflicts: aProjectRegistration)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   409
        ifFalse: [ ^ true ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   410
    configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   411
        ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   412
            aProjectRegistration configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   413
                ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   414
                    configurationProjectSpec ensureProjectLoaded.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   415
                    ^ configurationProjectSpec canDowngradeTo: aProjectRegistration configurationProjectSpec ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   416
    ^ false
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   417
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   418
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   419
canUpgradeTo: aProjectRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   420
    "true if there are no load conflicts
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   421
        OR
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   422
       if the load conflicts involved two cofigurations ONLY and an upgrade is allowed"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   423
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   424
    (self hasLoadConflicts: aProjectRegistration)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   425
        ifFalse: [ ^ true ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   426
    configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   427
        ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   428
            aProjectRegistration configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   429
                ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   430
                    configurationProjectSpec copy ensureProjectLoaded.
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   431
                    ^ configurationProjectSpec canUpgradeTo: aProjectRegistration configurationProjectSpec ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   432
    ^ false
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   433
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   434
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   435
hasLoadConflicts: aProjectRegistration
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   436
    "5 combinations of loads with no load conflicts:
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   437
        No configs and baselines =
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   438
        configs = and no baselines
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   439
        configs = and baselines =
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   440
        configs = and no baseline loaded (self) with a baseline to load (aProjectRegistration)
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   441
        config loaded (self), no config to load (aProjectRegistration) and no baseline loaded(self) with a baseline to load (aProjectRegistration) "
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   442
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   443
    self isValid
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   444
        ifFalse: [ self error: 'Invalid projectRegistration: ' , self printString ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   445
    aProjectRegistration isValid
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   446
        ifFalse: [ self error: 'Invalid projectRegistration: ' , aProjectRegistration printString ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   447
    configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   448
        ifNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   449
            aProjectRegistration configurationProjectSpec notNil
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   450
                ifTrue: [ ^ true ] ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   451
        ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   452
            aProjectRegistration configurationProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   453
                ifNotNil: [ 
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   454
                    (aProjectRegistration configurationProjectSpec registrationsCompareEqual: configurationProjectSpec) not
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   455
                        ifTrue: [ ^ true ] ] ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   456
    ^ baselineProjectSpec
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   457
        ifNil: [ false ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   458
        ifNotNil: [ (baselineProjectSpec registrationsCompareEqual: aProjectRegistration baselineProjectSpec) not ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   459
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   460
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   461
isValid
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   462
    " has a name and one or the other of the projectSpecs is non-nil"
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   463
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   464
    projectName ifNil: [ ^ false ].
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   465
    ^ configurationProjectSpec notNil or: [ baselineProjectSpec notNil ]
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   466
! !
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   467
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   468
!MetacelloProjectRegistration class methodsFor:'documentation'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   469
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   470
version_SVN
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   471
    ^ '$Id::                                                                                                                        $'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   472
! !