- MetacelloProjectSpecForLoad
added: #version_SVN
- MetacelloRemoveMemberSpec
added: #version_SVN
- MetacelloValueHolderSpec
added: #version_SVN
- MetacelloProjectSpecGenerator
added: #version_SVN
- MetacelloPackagesSpec
added: #version_SVN
- MetacelloSemanticVersionNumber
added: #version_SVN
- MetacelloProjectSpecLoadError
added: #version_SVN
- MetacelloAddMemberSpec
added: #version_SVN
- MetacelloCannotUpdateReleasedVersionError
added: #version_SVN
- MetacelloMergeMemberSpec
added: #version_SVN
- MetacelloValidationFailure
added: #version_SVN
- MetacelloAllowProjectDowngrade
added: #version_SVN
- MetacelloVersion
added: #version_SVN
- MetacelloScriptApiExecutor
added: #version_SVN
- MetacelloScriptProjectSpecNotification
added: #version_SVN
- MetacelloAllowConflictingProjectUpgrade
added: #version_SVN
- MetacelloBaseConfiguration
added: #version_SVN
- MetacelloConflictingProjectError
added: #version_SVN
- MetacelloProjectRegistration
added: #version_SVN
- MetacelloValidationIssue
added: #version_SVN
- MetacelloSymbolicVersionDoesNotExistError
added: #version_SVN
- MetacelloClearStackCacheNotification
added: #version_SVN
- MetacelloVersionMethodSpec
added: #version_SVN
- MetacelloLookupProjectSpecForLoad
added: #version_SVN
- MetacelloSymbolicVersionNotDefinedError
added: #version_SVN
- MetacelloPackageSpecResolutionError
added: #version_SVN
- stx_goodies_metacello_core
changed:
#classNamesAndAttributes
#extensionMethodNames
#preRequisites
- MetacelloValidationCriticalWarning
added: #version_SVN
- MetacelloStackCacheNotification
added: #version_SVN
- MetacelloVersionMethodSection
added: #version_SVN
- MetacelloProject
added: #version_SVN
- MetacelloErrorInProjectConstructionNotification
added: #version_SVN
- MetacelloGroupSpec
added: #version_SVN
- MetacelloAbstractConstructor
added: #version_SVN
- MetacelloConfigurationSpecGenerator
added: #version_SVN
- MetacelloVersionValidator
added: #version_SVN
- MetacelloSymbolicVersionMethodSpec
added: #version_SVN
- MetacelloScriptImageExecutor
added: #version_SVN
- MetacelloLockedProjectError
added: #version_SVN
- MetacelloProjectReferenceSpec
added: #version_SVN
- MetacelloLookupBaselineSpecForEnsureLoad
added: #version_SVN
- MetacelloToolBoxConstructor
added: #version_SVN
- MetacelloValidationError
added: #version_SVN
- MetacelloValidationWarning
added: #version_SVN
- MetacelloScriptGitHubDownloadNotification
added: #version_SVN
- MetacelloProjectSpecLoadedNotification
added: #version_SVN
- MetacelloScriptNotification
added: #version_SVN
- MetacelloScriptingError
added: #version_SVN
- MetacelloCopyMemberSpec
added: #version_SVN
- MetacelloScriptRegistryExecutor
added: #version_SVN
- MetacelloCleanNotification
added: #version_SVN
- MetacelloSpecLoader
added: #version_SVN
- MetacelloAllowProjectUpgrade
added: #version_SVN
- MetacelloValidationNotification
added: #version_SVN
- MetacelloScriptEnsureProjectLoadedForDevelopment
added: #version_SVN
- MetacelloScriptExecutor
added: #version_SVN
- MetacelloSpec
added: #version_SVN
- MetacelloCleanLoadAndTestsNotification
added: #version_SVN
- MetacelloMemberSpec
added: #version_SVN
- MetacelloProjectSpecLoadConflict
added: #version_SVN
- MetacelloResolveProjectUpgrade
added: #version_SVN
- MetacelloGenericProjectSpec
added: #version_SVN
- MetacelloMethodSpec
added: #version_SVN
- MetacelloVersionConstructor
added: #version_SVN
- MetacelloVersionDefinitionError
added: #version_SVN
- MetacelloBaselineConstructor
added: #version_SVN
- MetacelloScriptEngine
added: #version_SVN
- MetacelloUseUpgradeError
added: #version_SVN
- MetacelloSymbolicVersionSpec
added: #version_SVN
- MetacelloProjectSpec
added: #version_SVN
- MetacelloVersionDoesNotExistError
added: #version_SVN
- MetacelloMethodSectionPath
added: #version_SVN
- MetacelloCleanLoadNotification
added: #version_SVN
- MetacelloSkipDirtyPackageLoad
added: #version_SVN
- MetacelloPlatform
added: #version_SVN
changed: #createRepository:
- MetacelloLookupProjectSpec
added: #version_SVN
- MetacelloMethodSection
added: #version_SVN
- MetacelloProjectRegistry
added: #version_SVN
- MetacelloMemberListSpec
added: #version_SVN
- MetacelloVersionSpec
added: #version_SVN
- MetacelloAbstractVersionConstructor
added: #version_SVN
- MetacelloVersionNumber
added: #version_SVN
- MetacelloAbstractPackageSpec
added: #version_SVN
- MetacelloBaselineSpecGenerator
added: #version_SVN
- extensions
...
"{ Package: 'stx:goodies/metacello/base' }"
Object subclass:#Metacello
instanceVariableNames:'executorSpec statements'
classVariableNames:''
poolDictionaries:''
category:'Metacello-Base'
!
!Metacello class methodsFor:'instance creation'!
classic
"set the options such that the load performed will be identical to the classic ConfigurationOf load:
(ConfigurationOfExample project version: '1.0') load
#classic forces Metacello to look at image state to determine which version of a project is loaded instead of using
the registry to tell us explicitly which version of a project is loaded .. image state is not PRECISE"
"useCurrentVersion is a 'private' option for enforcing classic rules, so it's not part of scripting api"
^ self new
onUpgrade: [ :ex | ex allow ];
onConflict: [ :ex | ex allow ];
addStatement: #'useCurrentVersion:' args: {true};
yourself
!
image
^ self new
executorSpec: #'MetacelloScriptImageExecutor' -> 'batch';
yourself
!
registry
^ self new
executorSpec: #'MetacelloScriptRegistryExecutor' -> 'batch';
yourself
! !
!Metacello class methodsFor:'private'!
scriptExecutorClass
^ self scriptExecutorClass: {(#'MetacelloScriptApiExecutor' -> 'batch')}
!
scriptExecutorClass: anExecutorSpec
Smalltalk at: anExecutorSpec key ifAbsent: [ ConfigurationOf ensureMetacello: anExecutorSpec value ].
^ Smalltalk at: anExecutorSpec key
! !
!Metacello methodsFor:'accessing'!
executorSpec
executorSpec ifNil: [ executorSpec := #'MetacelloScriptApiExecutor' -> 'batch' ].
^ executorSpec
!
executorSpec: anAssoc
executorSpec := anAssoc
!
scriptExecutor
^ (self class scriptExecutorClass: self executorSpec) new
!
statements
statements ifNil: [ statements := OrderedCollection new ].
^ statements
!
statements: anObject
statements := anObject
! !
!Metacello methodsFor:'api actions'!
fetch
self addStatement: #'fetch:' args: #(#()).
^ self execute
!
fetch: required
self addStatement: #'fetch:' args: {required}.
^ self execute
!
get
"resolve project name in given repository and return an instance of MetacelloProject resolved from a ConfigurationOf or BaselineOf"
self addStatement: #'get' args: #().
^ self execute
!
list
"list projects in registry"
self addStatement: #'list' args: #().
^ self execute
!
load
self addStatement: #'load:' args: #(#()).
^ self execute
!
load: required
self addStatement: #'load:' args: {required}.
^ self execute
!
lock
"lock projects in registry"
self addStatement: #'lock' args: #().
^ self execute
!
record
self addStatement: #'record:' args: #(#()).
^ self execute
!
record: required
self addStatement: #'record:' args: {required}.
^ self execute
!
unlock
"unlock projects in registry"
self addStatement: #'unlock' args: #().
^ self execute
! !
!Metacello methodsFor:'api options'!
cacheRepository: aRepositoryDescription
self addStatement: #'cacheRepository:' args: {aRepositoryDescription}
!
ignoreImage
"ignore image state"
self addStatement: #'ignoreImage:' args: {true}
!
onConflict: aBlock
self addStatement: #'onConflict:' args: {aBlock}
!
onDowngrade: aBlock
self addStatement: #'onDowngrade:' args: {aBlock}
!
onUpgrade: aBlock
self addStatement: #'onUpgrade:' args: {aBlock}
!
repositoryOverrides: aRepositoryDescriptionCollection
self addStatement: #'repositoryOverrides:' args: {aRepositoryDescriptionCollection}
!
silently
"no progress bars"
self addStatement: #'silently:' args: {true}
! !
!Metacello methodsFor:'api projectSpec'!
baseline: projectName
self addStatement: #'baselineArg:' args: {projectName}
!
className: className
self addStatement: #'classNameArg:' args: {className}
!
configuration: projectName
self addStatement: #'configurationArg:' args: {projectName}
!
project: projectName
self addStatement: #'projectArg:' args: {projectName}
!
repository: repositoryDescription
self addStatement: #'repositoryArg:' args: {repositoryDescription}
!
version: versionString
self addStatement: #'versionArg:' args: {versionString}
! !
!Metacello methodsFor:'api repository shortcuts'!
blueplane: projectName
self repository: 'http://squeaksource.blueplane.jp/' , projectName
!
croquet: projectName
self repository: 'http://hedgehog.software.umn.edu:8888/' , projectName
!
gemsource: projectName
self repository: 'http://seaside.gemstone.com/ss/' , projectName
!
impara: projectName
self repository: 'http://source.impara.de/' , projectName
!
renggli: projectName
self repository: 'http://source.lukas-renggli.ch/' , projectName
!
saltypickle: projectName
self repository: 'http://squeak.saltypickle.com/' , projectName
!
squeakfoundation: projectName
self repository: 'http://source.squeakfoundation.org/' , projectName
!
squeaksource3: projectName
self repository: 'http://ss3.gemstone.com/ss/' , projectName
!
squeaksource: projectName
self repository: 'http://www.squeaksource.com/' , projectName
!
ss3: projectName
self squeaksource3: projectName
!
wiresong: projectName
self repository: 'http://source.wiresong.ca/' , projectName
! !
!Metacello methodsFor:'private'!
addStatement: selector args: args
self statements add: selector -> args
!
execute
| script |
script := self statements.
self statements: nil.
^ self scriptExecutor execute: script
! !
!Metacello class methodsFor:'documentation'!
version_SVN
^ '$Id:: $'
! !