packages/AbstractPackageManager.st
author james
Wed, 09 Apr 2003 13:28:46 +0200
changeset 1229 9b9552f762a5
child 1268 9dc8d1b8ce9b
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1229
9b9552f762a5 initial checkin
james
parents:
diff changeset
     1
"{ Package: 'stx:libbasic3' }"
9b9552f762a5 initial checkin
james
parents:
diff changeset
     2
9b9552f762a5 initial checkin
james
parents:
diff changeset
     3
"{ NameSpace: Packages }"
9b9552f762a5 initial checkin
james
parents:
diff changeset
     4
9b9552f762a5 initial checkin
james
parents:
diff changeset
     5
Object subclass:#AbstractPackageManager
9b9552f762a5 initial checkin
james
parents:
diff changeset
     6
	instanceVariableNames:'packages'
9b9552f762a5 initial checkin
james
parents:
diff changeset
     7
	classVariableNames:''
9b9552f762a5 initial checkin
james
parents:
diff changeset
     8
	poolDictionaries:''
9b9552f762a5 initial checkin
james
parents:
diff changeset
     9
	category:'Package-Managers'
9b9552f762a5 initial checkin
james
parents:
diff changeset
    10
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    11
9b9552f762a5 initial checkin
james
parents:
diff changeset
    12
9b9552f762a5 initial checkin
james
parents:
diff changeset
    13
!AbstractPackageManager class methodsFor:'instance creation'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    14
9b9552f762a5 initial checkin
james
parents:
diff changeset
    15
new
9b9552f762a5 initial checkin
james
parents:
diff changeset
    16
    ^ self basicNew initialize
9b9552f762a5 initial checkin
james
parents:
diff changeset
    17
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
    18
9b9552f762a5 initial checkin
james
parents:
diff changeset
    19
!AbstractPackageManager class methodsFor:'defaults'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    20
9b9552f762a5 initial checkin
james
parents:
diff changeset
    21
defaultPackages
9b9552f762a5 initial checkin
james
parents:
diff changeset
    22
    ^ Dictionary new.
9b9552f762a5 initial checkin
james
parents:
diff changeset
    23
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
    24
9b9552f762a5 initial checkin
james
parents:
diff changeset
    25
!AbstractPackageManager class methodsFor:'factory'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    26
9b9552f762a5 initial checkin
james
parents:
diff changeset
    27
newDefaultPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
    28
    ^ (self newPackageNamed:#'__NoProject__') mergeFromImage.
9b9552f762a5 initial checkin
james
parents:
diff changeset
    29
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    30
9b9552f762a5 initial checkin
james
parents:
diff changeset
    31
newPackageNamed:aString
9b9552f762a5 initial checkin
james
parents:
diff changeset
    32
    ^ self packageClass named:aString
9b9552f762a5 initial checkin
james
parents:
diff changeset
    33
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
    34
9b9552f762a5 initial checkin
james
parents:
diff changeset
    35
!AbstractPackageManager methodsFor:'accessing'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    36
9b9552f762a5 initial checkin
james
parents:
diff changeset
    37
packages
9b9552f762a5 initial checkin
james
parents:
diff changeset
    38
    ^ packages
9b9552f762a5 initial checkin
james
parents:
diff changeset
    39
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    40
9b9552f762a5 initial checkin
james
parents:
diff changeset
    41
packages:something
9b9552f762a5 initial checkin
james
parents:
diff changeset
    42
    "set the value of the instance variable 'packages' (automatically generated)"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    43
9b9552f762a5 initial checkin
james
parents:
diff changeset
    44
    packages := something.
9b9552f762a5 initial checkin
james
parents:
diff changeset
    45
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
    46
9b9552f762a5 initial checkin
james
parents:
diff changeset
    47
!AbstractPackageManager methodsFor:'api'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    48
9b9552f762a5 initial checkin
james
parents:
diff changeset
    49
installPackage:aPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
    50
    "installs aPackage into the image."
9b9552f762a5 initial checkin
james
parents:
diff changeset
    51
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    52
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    53
9b9552f762a5 initial checkin
james
parents:
diff changeset
    54
loadPackage:aFilename
9b9552f762a5 initial checkin
james
parents:
diff changeset
    55
    "loads a package ready for installation into the image"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    56
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    57
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    58
9b9552f762a5 initial checkin
james
parents:
diff changeset
    59
savePackage:aPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
    60
    "saves package"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    61
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    62
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    63
9b9552f762a5 initial checkin
james
parents:
diff changeset
    64
savePackage:aPackage as:aFilename
9b9552f762a5 initial checkin
james
parents:
diff changeset
    65
    "saves package"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    66
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    67
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    68
9b9552f762a5 initial checkin
james
parents:
diff changeset
    69
uninstallPackage:aPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
    70
    "uninstalls aPackage from the image"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    71
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    72
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    73
9b9552f762a5 initial checkin
james
parents:
diff changeset
    74
unloadPackage:aPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
    75
    "unloads the package from the receiver"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    76
    self subclassResponsibility             
9b9552f762a5 initial checkin
james
parents:
diff changeset
    77
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
    78
9b9552f762a5 initial checkin
james
parents:
diff changeset
    79
!AbstractPackageManager methodsFor:'enumerating'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    80
9b9552f762a5 initial checkin
james
parents:
diff changeset
    81
packagesDo:aOneArgBlock
9b9552f762a5 initial checkin
james
parents:
diff changeset
    82
    self packagesDo:aOneArgBlock excluding:#().
9b9552f762a5 initial checkin
james
parents:
diff changeset
    83
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
    84
9b9552f762a5 initial checkin
james
parents:
diff changeset
    85
packagesDo:aOneArgBlock excluding:aCollectionOrObject 
9b9552f762a5 initial checkin
james
parents:
diff changeset
    86
    "iterate through all packages except for aCollection of packages. Return the receiver.
9b9552f762a5 initial checkin
james
parents:
diff changeset
    87
    also look at #packagesDo: if you dont want to exclude anything"
9b9552f762a5 initial checkin
james
parents:
diff changeset
    88
    (aCollectionOrObject isCollection) ifTrue:[
9b9552f762a5 initial checkin
james
parents:
diff changeset
    89
        self packages do:[:aPackage |
9b9552f762a5 initial checkin
james
parents:
diff changeset
    90
            (aCollectionOrObject includes:aPackage) ifFalse:[
9b9552f762a5 initial checkin
james
parents:
diff changeset
    91
                aOneArgBlock value:aPackage.    
9b9552f762a5 initial checkin
james
parents:
diff changeset
    92
            ].
9b9552f762a5 initial checkin
james
parents:
diff changeset
    93
        ].
9b9552f762a5 initial checkin
james
parents:
diff changeset
    94
        ^ self.
9b9552f762a5 initial checkin
james
parents:
diff changeset
    95
    ].
9b9552f762a5 initial checkin
james
parents:
diff changeset
    96
9b9552f762a5 initial checkin
james
parents:
diff changeset
    97
    self packages do:[:aPackage |
9b9552f762a5 initial checkin
james
parents:
diff changeset
    98
        (aCollectionOrObject == aPackage) ifFalse:[
9b9552f762a5 initial checkin
james
parents:
diff changeset
    99
            aOneArgBlock value:aPackage.    
9b9552f762a5 initial checkin
james
parents:
diff changeset
   100
        ].
9b9552f762a5 initial checkin
james
parents:
diff changeset
   101
    ].
9b9552f762a5 initial checkin
james
parents:
diff changeset
   102
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
   103
9b9552f762a5 initial checkin
james
parents:
diff changeset
   104
!AbstractPackageManager methodsFor:'initialization'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
   105
9b9552f762a5 initial checkin
james
parents:
diff changeset
   106
initialize
9b9552f762a5 initial checkin
james
parents:
diff changeset
   107
    packages := self class defaultPackages.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   108
    ChangeSet current addDependent:self.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   109
    Smalltalk addDependent:self.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   110
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
   111
9b9552f762a5 initial checkin
james
parents:
diff changeset
   112
uninitialize
9b9552f762a5 initial checkin
james
parents:
diff changeset
   113
    packages := self class defaultPackages.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   114
    ChangeSet current removeDependent:self.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   115
    Smalltalk removeDependent:self.
9b9552f762a5 initial checkin
james
parents:
diff changeset
   116
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
   117
9b9552f762a5 initial checkin
james
parents:
diff changeset
   118
!AbstractPackageManager methodsFor:'queries'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
   119
9b9552f762a5 initial checkin
james
parents:
diff changeset
   120
includesPackage:aPackage
9b9552f762a5 initial checkin
james
parents:
diff changeset
   121
    ^ packages includesKey:aPackage name
9b9552f762a5 initial checkin
james
parents:
diff changeset
   122
!
9b9552f762a5 initial checkin
james
parents:
diff changeset
   123
9b9552f762a5 initial checkin
james
parents:
diff changeset
   124
includesPackageNamed:aPackageName
9b9552f762a5 initial checkin
james
parents:
diff changeset
   125
    
9b9552f762a5 initial checkin
james
parents:
diff changeset
   126
    ^ packages includesKey:aPackageName
9b9552f762a5 initial checkin
james
parents:
diff changeset
   127
! !
9b9552f762a5 initial checkin
james
parents:
diff changeset
   128
9b9552f762a5 initial checkin
james
parents:
diff changeset
   129
!AbstractPackageManager class methodsFor:'documentation'!
9b9552f762a5 initial checkin
james
parents:
diff changeset
   130
9b9552f762a5 initial checkin
james
parents:
diff changeset
   131
version
9b9552f762a5 initial checkin
james
parents:
diff changeset
   132
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/AbstractPackageManager.st,v 1.1 2003-04-09 11:28:46 james Exp $'
9b9552f762a5 initial checkin
james
parents:
diff changeset
   133
! !