MCPackage.st
author Claus Gittinger <cg@exept.de>
Mon, 26 Oct 2009 18:54:13 +0100
changeset 154 8194c64661da
parent 144 b7077cd6a0c3
child 157 eed1900fd7a1
permissions -rw-r--r--
changed: #snapshot
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
103
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCPackage
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'name'
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Base'
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCPackage class methodsFor:'as yet unclassified'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
named: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new name: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCPackage methodsFor:'as yet unclassified'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
= other
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ other species = self species and: [other name sameAs: name]
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
hasWorkingCopy
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ MCWorkingCopy registry includesKey: self
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
hash
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ name asLowercase hash
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
name
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^ name
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
name: aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	name _ aString
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
packageInfo
144
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    40
    Smalltalk isSmalltalkX ifTrue:[
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    41
        ^ ProjectDefinition 
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    42
            definitionClassForMonticelloPackage:name createIfAbsent:true
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    43
    ] ifFalse:[
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    44
        ^ PackageInfo named: name
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    45
    ].
103
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
printOn: aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	super printOn: aStream.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
		nextPut: $(;
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		nextPutAll: name;
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		nextPut: $)
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
snapshot
144
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    57
        | packageInfo definitions categories |
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    58
        packageInfo := self packageInfo.
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
    59
        definitions := OrderedCollection new.
154
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    60
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    61
        Smalltalk isSmalltalkX ifTrue:[
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    62
self halt.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    63
            packageInfo 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    64
                extensionMethods do: [:each | 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    65
                    definitions add:(
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    66
                        MCMethodDefinition 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    67
                            className: (each mclass name)
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    68
                            classIsMeta: (each mclass isMeta)
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    69
                            selector: (each selector)
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    70
                            category: (each category)
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    71
                            timeStamp: nil
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    72
                            source: (each source))
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    73
                ].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    74
self halt.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    75
            packageInfo classes do: [:ea | 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    76
                definitions addAll: ea classDefinitions
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    77
            ].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    78
            packageInfo hasPreLoadAction ifTrue: [definitions add: (MCPreambleDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    79
            packageInfo hasPostLoadAction ifTrue: [definitions add: (MCPostscriptDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    80
            packageInfo hasPreUnloadAction ifTrue: [definitions add: (MCRemovalPreambleDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    81
            "/ in ST/X, there is no live after death
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    82
            "/ packageInfo hasPostUnloadAction ifTrue: [definitions add: (MCRemovalPostscriptDefinition from: packageInfo)]. 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    83
self halt.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    84
        ] ifFalse:[
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    85
            categories := packageInfo systemCategories.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    86
            categories isEmpty ifFalse: [ definitions add: (MCOrganizationDefinition categories: categories) ].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    87
            packageInfo methods do: [:ea | definitions add: ea asMethodDefinition] displayingProgress: 'Snapshotting methods...'.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    88
            (packageInfo respondsTo: #overriddenMethods) ifTrue:
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    89
                    [packageInfo overriddenMethods
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    90
                            do: [:ea | definitions add:
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    91
                                            (packageInfo changeRecordForOverriddenMethod: ea) asMethodDefinition]
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    92
                            displayingProgress: 'Searching for overrides...'].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    93
            packageInfo classes do: [:ea | definitions addAll: ea classDefinitions] displayingProgress: 'Snapshotting classes...'.
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    94
            (packageInfo respondsTo: #hasPreamble) ifTrue: [
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    95
                    packageInfo hasPreamble ifTrue: [definitions add: (MCPreambleDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    96
                    packageInfo hasPostscript ifTrue: [definitions add: (MCPostscriptDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    97
                    packageInfo hasPreambleOfRemoval ifTrue: [definitions add: (MCRemovalPreambleDefinition from: packageInfo)].
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    98
                    packageInfo hasPostscriptOfRemoval ifTrue: [definitions add: (MCRemovalPostscriptDefinition from: packageInfo)]]. 
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
    99
        ].
144
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
   100
        ^ MCSnapshot fromDefinitions: definitions
103
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
storeOn: aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	aStream
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		nextPutAll: 'MCPackage';
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		space; nextPutAll: 'named: '; store: name.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
unload
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	^ self workingCopy unload
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
workingCopy
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	^ MCWorkingCopy forPackage: self.
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
! !
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!MCPackage class methodsFor:'documentation'!
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
version
154
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
   120
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPackage.st,v 1.3 2009-10-26 17:54:13 cg Exp $'
144
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
   121
!
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
   122
b7077cd6a0c3 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 103
diff changeset
   123
version_CVS
154
8194c64661da changed: #snapshot
Claus Gittinger <cg@exept.de>
parents: 144
diff changeset
   124
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPackage.st,v 1.3 2009-10-26 17:54:13 cg Exp $'
103
016996199a05 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
! !