core/MetacelloScriptEngine.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 02 Oct 2012 22:30:53 +0000
changeset 22 e1678fee6b03
parent 16 25ac697dc747
permissions -rw-r--r--
- MetacelloScriptEngine changed: #lookupProjectSpecFor: #validateProjectSpecForScript - MetacelloValidationNotification changed: #signal: - MetacelloProject changed: #version: - MetacelloPlatform changed: #useStackCacheDuring:defaultDictionary: - MetacelloCleanNotification changed: #signal: - MetacelloClearStackCacheNotification changed: #signal: - MetacelloProjectSpecForLoad changed: #performCurrentVersionTestAgainst:operator:targetVersionStatus:using: - MetacelloSkipDirtyPackageLoad changed: #signal: - MetacelloErrorInProjectConstructionNotification changed: #versionString:exception: - MetacelloGenericProjectSpec changed: #load - extensions ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
d354ac2af7ec Metacello package refactoring - phase 2~
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
     1
"{ Package: 'stx:goodies/metacello/core' }"
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     2
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     3
Object subclass:#MetacelloScriptEngine
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     4
	instanceVariableNames:'root projectSpec options'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     5
	classVariableNames:'DefaultRepositoryDescription DefaultVersionString'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     6
	poolDictionaries:''
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     7
	category:'Metacello-Core-Scripts'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     8
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     9
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    10
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    11
!MetacelloScriptEngine class methodsFor:'defaults'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    12
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    13
defaultRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    14
    DefaultRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    15
        ifNil: [ DefaultRepositoryDescription := MetacelloPlatform current defaultRepositoryDescription ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    16
    ^ DefaultRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    17
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    18
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    19
defaultVersionString
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    20
    DefaultVersionString ifNil: [ DefaultVersionString := #'stable' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    21
    ^ DefaultVersionString
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    22
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    23
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    24
!MetacelloScriptEngine class methodsFor:'utility'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    25
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    26
baseNameOf: className
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    27
    ^ (className indexOfSubCollection: 'BaselineOf') = 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    28
        ifTrue: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    29
            (className indexOfSubCollection: 'ConfigurationOf') = 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    30
                ifTrue: [ className ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    31
                ifFalse: [ className copyFrom: 'ConfigurationOf' size + 1 to: className size ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    32
        ifFalse: [ className copyFrom: 'BaselineOf' size + 1 to: className size ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    33
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    34
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    35
baselineNameFrom: baseName
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    36
    "Return the fully-qualified configuration class name."
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    37
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    38
    ^ (baseName indexOfSubCollection: 'BaselineOf') > 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    39
        ifTrue: [ baseName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    40
        ifFalse: [ 'BaselineOf' , baseName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    41
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    42
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    43
baselineProjectNameOf: baselineClassName
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    44
    ^ (baselineClassName indexOfSubCollection: 'BaselineOf') = 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    45
        ifTrue: [ baselineClassName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    46
        ifFalse: [ baselineClassName copyFrom: 'BaselineOf' size + 1 to: baselineClassName size ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    47
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    48
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    49
configurationNameFrom: baseName
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    50
    "Return the fully-qualified configuration class name."
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    51
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    52
    ^ (baseName indexOfSubCollection: 'ConfigurationOf') > 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    53
        ifTrue: [ baseName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    54
        ifFalse: [ 'ConfigurationOf' , baseName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    55
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    56
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    57
configurationProjectNameOf: configurationClassName
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    58
    ^ (configurationClassName indexOfSubCollection: 'ConfigurationOf') = 0
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    59
        ifTrue: [ configurationClassName ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    60
        ifFalse: [ configurationClassName copyFrom: 'ConfigurationOf' size + 1 to: configurationClassName size ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    61
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    62
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    63
!MetacelloScriptEngine methodsFor:'accessing'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    64
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    65
options
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    66
    options ifNil: [ options := Dictionary new ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    67
    ^ options
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    68
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    69
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    70
options: aDictionary
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    71
    options := aDictionary
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    72
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    73
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    74
projectName
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    75
    ^ self projectSpec name
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    76
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    77
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    78
projectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    79
    ^ projectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    80
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    81
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    82
projectSpec: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    83
    projectSpec := aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    84
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    85
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    86
repositories
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    87
    ^ self projectSpec repositories
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    88
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    89
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    90
root
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    91
	^ root
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    92
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    93
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    94
root: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    95
	root := anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    96
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    97
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    98
!MetacelloScriptEngine methodsFor:'actions api'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    99
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   100
fetch: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   101
    self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   102
        fetchRecord: [ :version | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   103
            required isEmpty
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   104
                ifTrue: [ version fetch ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   105
                ifFalse: [ version fetch: required ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   106
        required: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   107
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   108
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   109
fetchRecord: fetchRecordBlock required: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   110
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   111
        copyRegistryWhile: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   112
            self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   113
                handleNotificationsForAction: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   114
                    | version loadedSpec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   115
                    self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   116
                    [ loadedSpec := self lookupProjectSpecFor: self projectSpec ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   117
                        on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   118
                        do: [ :notification | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   119
                            notification
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   120
                                handleOnDownGrade: [ :ex :existing :new | ex allowEvenIfLocked ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   121
                                onUpgrade: [ :ex :existing :new | ex allowEvenIfLocked ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   122
                    version := loadedSpec versionForScriptEngine: self.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   123
                    self root: (fetchRecordBlock value: version) loadDirective ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   124
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   125
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   126
get
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   127
    " load a fresh copy from repo"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   128
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   129
    | spec projectPackage |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   130
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   131
        copyRegistryRestoreOnErrorWhile: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   132
            self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   133
            spec := self projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   134
            projectPackage := spec projectPackage.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   135
            projectPackage repositorySpecs do: [ :repoSpec | repoSpec createRepository flushForScriptGet ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   136
            projectPackage load.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   137
            self root: (Smalltalk at: spec className asSymbol) project.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   138
            MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   139
                registrationForProjectSpec: spec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   140
                ifAbsent: [ :new | new registerProject ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   141
                ifPresent: [ :existing :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   142
                    existing
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   143
                        copyOnWrite: [ :existingCopy | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   144
                            spec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   145
                                copyForRegistration: existingCopy
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   146
                                onWrite: [ :specCopy | specCopy ifNil: [ existingCopy merge: new ] ifNotNil: [ specCopy mergeScriptRepository: spec ] ] ] ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   147
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   148
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   149
list
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   150
    self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   151
    self root: self projectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   152
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   153
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   154
load: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   155
    self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   156
        load: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   157
        onProjectDownGrade: [ :ex :existing :new | ex allowEvenIfLocked ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   158
        onProjectUpgrade: [ :ex :existing :new | ex allowEvenIfLocked ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   159
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   160
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   161
load: required onProjectDownGrade: onDownGradeBlock onProjectUpgrade: onUpgradeBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   162
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   163
        copyRegistryRestoreOnErrorWhile: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   164
            self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   165
                handleNotificationsForAction: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   166
                    | version loadedSpec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   167
                    self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   168
                    [ loadedSpec := self lookupProjectSpecFor: self projectSpec ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   169
                        on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   170
                        do: [ :ex | ex handleOnDownGrade: onDownGradeBlock onUpgrade: onUpgradeBlock ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   171
                    version := loadedSpec versionForScriptEngine: self.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   172
                    self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   173
                        root:
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   174
                            (required isEmpty
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   175
                                ifTrue: [ version load ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   176
                                ifFalse: [ version load: required ]) loadDirective.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   177
                    loadedSpec loads: required.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   178
                    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   179
                        registrationForProjectSpec: loadedSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   180
                        ifAbsent: [ :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   181
                            new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   182
                                loadedInImage: true;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   183
                                registerProject ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   184
                        ifPresent: [ :existing :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   185
                            existing
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   186
                                copyOnWrite: [ :existingCopy | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   187
                                    existingCopy
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   188
                                        loadedInImage: true;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   189
                                        merge: new ] ] ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   190
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   191
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   192
lock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   193
    | spec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   194
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   195
        copyRegistryRestoreOnErrorWhile: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   196
            self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   197
            spec := self projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   198
            MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   199
                registrationForProjectSpec: spec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   200
                ifAbsent: [ :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   201
                    new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   202
                        locked: true;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   203
                        registerProject ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   204
                ifPresent: [ :existing :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   205
                    existing
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   206
                        copyOnWrite: [ :existingCopy | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   207
                            existingCopy locked: true.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   208
                            spec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   209
                                copyForRegistration: existingCopy
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   210
                                onWrite: [ :specCopy | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   211
                                    specCopy
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   212
                                        ifNil: [ existingCopy merge: new ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   213
                                        ifNotNil: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   214
                                            specCopy mergeScriptRepository: spec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   215
                                            spec := specCopy ] ] ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   216
            self root: spec ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   217
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   218
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   219
record: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   220
    self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   221
        fetchRecord: [ :version | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   222
            required isEmpty
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   223
                ifTrue: [ version record ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   224
                ifFalse: [ version record: required ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   225
        required: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   226
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   227
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   228
unlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   229
    | spec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   230
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   231
        copyRegistryRestoreOnErrorWhile: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   232
            self validateProjectSpecForScript.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   233
            spec := self projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   234
            MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   235
                registrationForProjectSpec: spec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   236
                ifAbsent: [ :ignored |  ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   237
                ifPresent: [ :existing :new | existing copyOnWrite: [ :existingCopy | existingCopy locked: false ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   238
            self root: spec ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   239
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   240
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   241
!MetacelloScriptEngine methodsFor:'defaults'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   242
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   243
defaultRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   244
    ^ self class defaultRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   245
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   246
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   247
defaultVersionString
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   248
    ^ self class defaultVersionString
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   249
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   250
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   251
!MetacelloScriptEngine methodsFor:'handlers'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   252
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   253
handleConflict: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   254
    ^ (self options at: #'onConflict' ifAbsent: [ ^ exception pass ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   255
        cull: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   256
        cull: exception existingProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   257
        cull: exception newProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   258
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   259
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   260
handleDowngrade: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   261
    ^ (self options at: #'onDowngrade' ifAbsent: [ ^ exception pass ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   262
        cull: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   263
        cull: exception existingProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   264
        cull: exception newProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   265
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   266
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   267
handleEnsureProjectLoadedForDevelopment: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   268
    "if useCurrentVersion resume with true, else resume with false"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   269
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   270
    ^ exception resume: self useCurrentVersion
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   271
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   272
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   273
handleLookupBaselineSpecForEnsureLoad: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   274
	"if existing and new don't compare equal, then ensure the new baseline is loaded"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   275
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   276
	| existing new |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   277
	new := exception projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   278
	existing := self lookupBaselineSpecForEnsure: exception projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   279
	^ exception resume: (existing registrationsCompareEqual: new) not
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   280
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   281
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   282
handleLookupProjectSpec: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   283
    ^ exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   284
        resume:
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   285
            ((self lookupProjectSpecFor: exception projectSpec) ifNil: [ ^ exception resume: exception projectSpec ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   286
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   287
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   288
handleLookupProjectSpecForLoad: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   289
    "if overrideProjectSpec is nil, use currentVersion in image, ignoreImage is false"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   290
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   291
    | existing new override |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   292
    existing := exception projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   293
    override := self useCurrentVersion
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   294
        ifTrue: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   295
            "don't do lookup in registry if we expect to use the #currentVersion calculation"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   296
            nil ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   297
        ifFalse: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   298
            new := self lookupProjectSpecFor: exception projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   299
            (new compareEqual: existing)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   300
                ifFalse: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   301
                    "counts as override, only if they differ in some aspect"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   302
                    override := new ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   303
    ^ exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   304
        resume:
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   305
            (MetacelloProjectSpecForLoad new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   306
                projectSpec: existing;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   307
                useDetermineVersionForLoad: self useCurrentVersion;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   308
                overrideProjectSpec: override;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   309
                yourself)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   310
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   311
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   312
handleNotificationsForAction: actionBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   313
	[ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   314
	actionBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   315
		on:
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   316
			MetacelloLookupProjectSpec , MetacelloLookupProjectSpecForLoad , MetacelloProjectSpecLoadedNotification
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   317
				, MetacelloScriptEnsureProjectLoadedForDevelopment , MetacelloLookupBaselineSpecForEnsureLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   318
		do: [ :ex | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   319
			"lookup and registration handlers need to be innermost set of handlers ...they may throw option notifications"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   320
			ex handleResolutionFor: self ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   321
		on: MetacelloAllowProjectDowngrade , MetacelloAllowProjectUpgrade , MetacelloAllowConflictingProjectUpgrade
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   322
		do: [ :ex | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   323
			"option handlers need to be outermost set of handlers ... last line of defense before users are involved"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   324
			ex handleResolutionFor: self ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   325
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   326
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   327
handleProjectSpecLoaded: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   328
    MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   329
        registrationForProjectSpec: exception projectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   330
        ifAbsent: [ :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   331
            new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   332
                loadedInImage: true;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   333
                registerProject ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   334
        ifPresent: [ :existing :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   335
            "unconditionally merge new with existing (updates registration)"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   336
            existing
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   337
                copyOnWrite: [ :existingCopy | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   338
                    existingCopy
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   339
                        loadedInImage: true;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   340
                        merge: new ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   341
    exception resume
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   342
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   343
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   344
handleUpgrade: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   345
    ^ (self options at: #'onUpgrade' ifAbsent: [ ^ exception pass ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   346
        cull: exception
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   347
        cull: exception existingProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   348
        cull: exception newProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   349
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   350
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   351
!MetacelloScriptEngine methodsFor:'options'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   352
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   353
cacheRepository
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   354
    ^ (MetacelloMCProject new repositorySpec description: (self options at: #'cacheRepository' ifAbsent: [ ^ nil ]))
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   355
        createRepository
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   356
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   357
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   358
ignoreImage
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   359
    ^ self options at: #'ignoreImage' ifAbsent: [ false ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   360
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   361
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   362
repositoryOverrides
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   363
    ^ (self options at: #'repositoryOverrides' ifAbsent: [ ^ nil ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   364
        collect: [ :description | (MetacelloMCProject new repositorySpec description: description) createRepository ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   365
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   366
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   367
silently
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   368
    ^ self options at: #'silently' ifAbsent: [ false ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   369
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   370
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   371
useCurrentVersion
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   372
    "private option used to implement the classic mode"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   373
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   374
    ^ self options at: #'useCurrentVersion' ifAbsent: [ false ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   375
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   376
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   377
!MetacelloScriptEngine methodsFor:'project lookup'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   378
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   379
getBaselineProjectUnconditionalLoad: unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   380
    | project |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   381
    project := (self getBaselineUnconditionalLoad: unconditionalLoad) project.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   382
    project version spec repositories: self repositories copy.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   383
    ^ project
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   384
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   385
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   386
getBaselineUnconditionalLoad: unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   387
    | spec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   388
    spec := self projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   389
    Smalltalk
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   390
        at: spec className asSymbol
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   391
        ifPresent: [ :cl | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   392
            unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   393
                ifFalse: [ ^ cl ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   394
    (spec := self lookupProjectSpecFor: spec) projectPackage load.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   395
    ^ Smalltalk at: spec className asSymbol
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   396
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   397
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   398
getConfigurationProjectUnconditionalLoad: unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   399
    ^ (self getConfigurationUnconditionalLoad: unconditionalLoad) project
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   400
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   401
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   402
getConfigurationUnconditionalLoad: unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   403
    | spec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   404
    spec := self projectSpec.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   405
    Smalltalk
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   406
        at: spec className asSymbol
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   407
        ifPresent: [ :cl | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   408
            unconditionalLoad
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   409
                ifFalse: [ ^ cl ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   410
    (spec := self lookupProjectSpecFor: spec) projectPackage load.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   411
    ^ Smalltalk at: spec className asSymbol
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   412
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   413
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   414
lookupBaselineSpecForEnsure: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   415
	| registration loadedSpec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   416
	registration := MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   417
		registrationForProjectSpec: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   418
		ifAbsent: [ :new | new ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   419
		ifPresent: [ :existing :new | existing ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   420
	^ registration lookupSpec: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   421
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   422
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   423
lookupProjectSpecFor: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   424
    | registration loadedSpec |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   425
    registration := MetacelloProjectRegistration
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   426
        registrationForProjectSpec: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   427
        ifAbsent: [ :new | new ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   428
        ifPresent: [ :existing :new | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   429
            (existing hasLoadConflicts: new)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   430
                ifTrue: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   431
                    ((existing canUpgradeTo: new)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   432
                        ifTrue: [ MetacelloAllowProjectUpgrade new ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   433
                        ifFalse: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   434
                            (existing canDowngradeTo: new)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   435
                                ifTrue: [ MetacelloAllowProjectDowngrade new ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   436
                                ifFalse: [ MetacelloAllowConflictingProjectUpgrade new ] ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   437
                        existingProjectRegistration: existing;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   438
                        newProjectRegistration: new;
22
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   439
                        raiseSignal ]
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   440
                ifFalse: [ new ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   441
    ^ registration lookupSpec: aProjectSpec
22
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   442
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   443
    "Modified: / 02-10-2012 / 23:32:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   444
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   445
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   446
validateProjectSpecForScript
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   447
    | issues |
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   448
    issues := self projectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   449
        validateForScriptLoad: self
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   450
        withDefaultVersionString: self defaultVersionString
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   451
        withDefaultRepositoryDecription: self defaultRepositoryDescription.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   452
    issues isEmpty
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   453
        ifTrue: [ ^ self ].
22
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   454
    (MetacelloValidationFailure issues: issues message: 'Project spec validation failure') raiseSignal
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   455
e1678fee6b03 - MetacelloScriptEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   456
    "Modified: / 02-10-2012 / 23:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   457
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   458
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   459
!MetacelloScriptEngine class methodsFor:'documentation'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   460
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   461
version_SVN
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   462
    ^ '$Id::                                                                                                                        $'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   463
! !