- 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/core' }"
Magnitude subclass:#MetacelloVersion
instanceVariableNames:'spec versionNumber importedVersions versionStatus'
classVariableNames:''
poolDictionaries:''
category:'Metacello-Core-Model'
!
!MetacelloVersion class methodsFor:'instance creation'!
fromSpec: aMetacelloVersionSpec
^(self fromString: aMetacelloVersionSpec versionString)
spec: aMetacelloVersionSpec;
yourself
!
fromString: aString
^self new versionNumber: aString asMetacelloVersionNumber
! !
!MetacelloVersion methodsFor:'accessing'!
importedVersions
importedVersions == nil ifTrue: [ importedVersions := #() ].
^importedVersions
!
importedVersions: aCollection
importedVersions := aCollection
!
projectLabel
^self spec projectLabel
!
spec
^spec
!
spec: aMetacellVersionSpec
spec := aMetacellVersionSpec
!
versionNumber: aVersionNumber
versionNumber := aVersionNumber
!
versionSpec
^self spec
!
versionStatus
versionStatus == nil ifTrue: [ versionStatus := self computeVersionStatus].
^versionStatus
!
versionStatus: aSymbol
versionStatus := aSymbol
! !
!MetacelloVersion methodsFor:'actions'!
load
^self subclassResponsibility
!
load: required
^self subclassResponsibility
!
unload
^self spec unload
! !
!MetacelloVersion methodsFor:'comparing'!
< aMetacelloVersion
aMetacelloVersion species = self species ifFalse: [ ^false ].
^self versionNumber < aMetacelloVersion versionNumber
!
= aMetacelloVersion
aMetacelloVersion species = self species ifFalse: [ ^false ].
^self versionNumber = aMetacelloVersion versionNumber
!
hash
^self versionNumber hash
!
~> aMetacelloVersion
aMetacelloVersion species = self species ifFalse: [ ^false ].
^self versionNumber ~> aMetacelloVersion versionNumber
! !
!MetacelloVersion methodsFor:'printing'!
printOn: aStream
| label vs |
self blessing ~~ #broken
ifTrue: [
(vs := self versionStatus) == #somethingLoaded
ifTrue: [ aStream nextPutAll: '<>' ].
vs == #loadedMatchConstraints
ifTrue: [ aStream nextPutAll: '>=' ].
vs == #loadedToSpec
ifTrue: [ aStream nextPut: $~ ] ].
self versionNumber printOn: aStream.
self spec ~~ nil
ifTrue: [
(label := self spec projectLabel) isEmpty
ifFalse: [ aStream nextPutAll: ' [' , label , ']' ] ]
! !
!MetacelloVersion methodsFor:'private'!
computeVersionStatus
"
#allLoadedToSpec - all projects and packages are loaded and match specification
#loadedToSpec - all loaded projects and packages match specifications (at least one package loaded)
#loadedMatchConstraints - all loaded projects and packages match constraints (at least one package loaded)
#somethingLoaded - at least one package loaded
"
self spec computeVersionStatus: [ :status | ^ status ].
^ #noStatus
! !
!MetacelloVersion methodsFor:'querying'!
author
^self spec author value
!
blessing
^self spec blessing value
!
description
^self spec description value
!
loader
^self spec loader
!
project
^self spec project
!
timestamp
^self spec timestamp value
!
versionKey
"version printString, without the versionStatus decorations, suitable for using as a unique key for the
receiver in a dictionary"
^ String streamContents: [:aStream| |label|
self versionNumber printOn: aStream.
self spec ~~ nil
ifTrue: [(label := self spec projectLabel) isEmpty
ifFalse: [aStream nextPutAll: ' [' , label , ']']] ]
!
versionNumber
^versionNumber
!
versionString
^self versionNumber versionString
! !
!MetacelloVersion methodsFor:'testing'!
isAllLoadedToSpec
"all projects and packages are loaded and match specification"
^self spec isAllLoadedToSpec
!
isLoadedMatchConstraints
"all loaded projects and packages match constraints"
^self spec isLoadedMatchConstraints
!
isLoadedToSpec
"all loaded projects and packages match specifications"
^self spec isLoadedToSpec
!
isPossibleBaseline
^self spec isPossibleBaseline
!
isSomethingLoaded
"at least one project or package has been loaded"
^self spec isSomethingLoaded
!
name
^self versionString
! !
!MetacelloVersion class methodsFor:'documentation'!
version_SVN
^ '$Id:: $'
! !