core/MetacelloScriptExecutor.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 19 Sep 2012 01:38:26 +0000
changeset 20 8caf2f257260
parent 19 28c344380944
permissions -rw-r--r--
- fixes for package support
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:#MetacelloScriptExecutor
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     4
	instanceVariableNames:'options roots singleRoot projectSpecGenerator actionArg
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     5
		configurationArg baselineArg projectArg classNameArg versionArg
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     6
		repositoryArg'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     7
	classVariableNames:''
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     8
	poolDictionaries:''
9e312de5f694 - Initial commit
jv
parents:
diff changeset
     9
	category:'Metacello-Core-Scripts'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    10
!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    11
9e312de5f694 - Initial commit
jv
parents:
diff changeset
    12
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    13
!MetacelloScriptExecutor methodsFor:'accessing'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    14
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    15
options
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    16
    options ifNil: [ options := Dictionary new ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    17
    ^ options
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
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    20
roots
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    21
    roots ifNil: [ roots := OrderedCollection new ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    22
    ^ roots
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
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    25
singleRoot
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    26
    singleRoot ifNil: [ singleRoot := false ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    27
    ^ singleRoot
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    28
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    29
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    30
singleRoot: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    31
    singleRoot := aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    32
! !
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
!MetacelloScriptExecutor methodsFor:'actions api'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    35
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    36
fetch: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    37
    actionArg := #'fetch:' -> {required}
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    38
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    39
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    40
get
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    41
    actionArg := #'get' -> #()
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
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    44
list
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    45
    actionArg := #'list' -> #()
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    46
!
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
load: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    49
    actionArg := #'load:' -> {required}
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    50
!
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
lock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    53
    actionArg := #'lock' -> #()
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    54
!
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
record: required
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    57
    actionArg := #'record:' -> {required}
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    58
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    59
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    60
unlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    61
    actionArg := #'unlock' -> #()
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
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    64
!MetacelloScriptExecutor methodsFor:'args'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    65
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    66
baselineArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    67
	^ baselineArg
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
baselineArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    71
	baselineArg := anObject
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
classNameArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    75
    ^ classNameArg
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
classNameArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    79
    classNameArg := anObject
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
configurationArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    83
    ^ configurationArg
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
configurationArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    87
    configurationArg := anObject
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
projectArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    91
    ^ projectArg
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
projectArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    95
    projectArg := 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
repositoryArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
    99
    ^ repositoryArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   100
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   101
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   102
repositoryArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   103
    repositoryArg := anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   104
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   105
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   106
versionArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   107
    ^ versionArg
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
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   110
versionArg: anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   111
    versionArg := anObject
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   112
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   113
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   114
!MetacelloScriptExecutor methodsFor:'execution'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   115
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   116
applyArgsToProjectSpec: aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   117
    classNameArg ifNotNil: [ aProjectSpec className: classNameArg ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   118
    versionArg ifNotNil: [ aProjectSpec versionString: versionArg ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   119
    repositoryArg ifNotNil: [ aProjectSpec repository: repositoryArg ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   120
    ^ aProjectSpec
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   121
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   122
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   123
execute: statements
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   124
    statements
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   125
        do: [ :assoc | assoc value ifNil: [ self perform: assoc key ] ifNotNil: [ self perform: assoc key withArguments: assoc value ] ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   126
    projectSpecGenerator := self projectSpecGenerator.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   127
    projectSpecGenerator target
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   128
        execute: [ :projectSpec | 
19
28c344380944 stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   129
            | engine root |
28c344380944 stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   130
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   131
            engine := MetacelloScriptEngine new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   132
                options: self options copy;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   133
                projectSpec: projectSpec;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   134
                yourself.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   135
            engine perform: actionArg key withArguments: actionArg value.
19
28c344380944 stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   136
            (root := engine root) ifNotNil: [ self roots add: root ] ]
16
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   137
        against: self.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   138
    ^ (self singleRoot and: [ self roots size == 1 ])
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   139
        ifTrue: [ self roots first ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   140
        ifFalse: [ self roots ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   141
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   142
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   143
projectSpecGenerator
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   144
    baselineArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   145
        ifNotNil: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   146
            configurationArg ifNotNil: [ self error: ' baseline: and configuration: are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   147
            projectArg ifNotNil: [ self error: ' baseline: and project are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   148
            ^ MetacelloBaselineSpecGenerator new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   149
                target: baselineArg;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   150
                yourself ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   151
    configurationArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   152
        ifNotNil: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   153
            baselineArg ifNotNil: [ self error: ' baseline: and configuration: are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   154
            projectArg ifNotNil: [ self error: ' configuration and project are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   155
            ^ MetacelloConfigurationSpecGenerator new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   156
                target: configurationArg;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   157
                yourself ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   158
    projectArg
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   159
        ifNotNil: [ 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   160
            configurationArg ifNotNil: [ self error: ' project and configuration: are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   161
            baselineArg ifNotNil: [ self error: ' baseline: and project are both be specified' ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   162
            ^ MetacelloProjectSpecGenerator new
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   163
                target: projectArg;
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   164
                yourself ].
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   165
    self error: 'project, baseline, or configuration not specified'
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   166
! !
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   167
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   168
!MetacelloScriptExecutor methodsFor:'execution callback'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   169
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   170
executeBlock: selectBlock do: projectSpecBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   171
    ((projectSpecGenerator projectSpecListBlock value select: selectBlock) select: self projectSpecSelectBlock)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   172
        do: [ :projectSpec | projectSpecBlock value: (self applyArgsToProjectSpec: projectSpec copy) ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   173
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   174
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   175
executeCollection: aCollection do: projectSpecBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   176
    aCollection
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   177
        do: [ :projectName | 
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   178
            ((projectSpecGenerator projectSpecLookupBlock value: projectName) select: self projectSpecSelectBlock)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   179
                do: [ :projectSpec | projectSpecBlock value: (self applyArgsToProjectSpec: projectSpec copy) ] ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   180
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   181
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   182
executeString: aString do: projectSpecBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   183
    self singleRoot: true.
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   184
    ((projectSpecGenerator projectSpecLookupBlock value: aString) select: self projectSpecSelectBlock)
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   185
        do: [ :projectSpec | projectSpecBlock value: (self applyArgsToProjectSpec: projectSpec copy) ]
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   186
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   187
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   188
projectSpecSelectBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   189
    ^ [ :projectSpec | true ]
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
!MetacelloScriptExecutor methodsFor:'options api'!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   193
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   194
cacheRepository: aRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   195
    self options at: #'cacheRepository' put: aRepositoryDescription
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   196
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   197
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   198
ignoreImage: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   199
    self options at: #'ignoreImage' put: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   200
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   201
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   202
onConflict: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   203
    self options at: #'onConflict' put: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   204
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   205
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   206
onDowngrade: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   207
    self options at: #'onDowngrade' put: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   208
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   209
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   210
onUpgrade: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   211
    self options at: #'onUpgrade' put: aBlock
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   212
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   213
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   214
repositoryOverrides: aRepositoryDescriptionList
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   215
    self options at: #'repositoryOverrides' put: aRepositoryDescriptionList
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   216
!
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
silently: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   219
    self options at: #'silently' put: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   220
!
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   221
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   222
useCurrentVersion: aBool
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   223
    "private option used to implement the classic mode"
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   224
25ac697dc747 - Updated from branch master
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   225
    self options at: #'useCurrentVersion' put: aBool
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
1
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   228
!MetacelloScriptExecutor class methodsFor:'documentation'!
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   229
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   230
version_SVN
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   231
    ^ '$Id::                                                                                                                        $'
9e312de5f694 - Initial commit
jv
parents:
diff changeset
   232
! !