[Pkg] Sake : Sake-Installer-mtf.14.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Thu Oct 9 17:41:25 UTC 2008
A new version of Sake-Installer was added to project Sake :
http://www.squeaksource.com/Sake/Sake-Installer-mtf.14.mcz
==================== Summary ====================
Name: Sake-Installer-mtf.14
Author: mtf
Time: 9 October 2008, 10:42:15 am
UUID: 0fa61680-e251-4693-b7a3-55ae50ed7d93
Ancestors: Sake-Installer-mtf.13
Split out files, sake, and the update stream. This concludes the Installer split-up
=============== Diff against Sake-Installer-mtf.13 ===============
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>writeList:toStream: (in category 'updates') -----
+ writeList: listContents toStream: strm
+ "Write a parsed updates.list out as text.
+ This is the inverse of parseUpdateListContents:"
+
+ | fileNames releaseTag |
+ strm reset.
+ listContents do:
+ [:pair |
+ releaseTag := pair first.
+ fileNames := pair last.
+ strm nextPut: $#; nextPutAll: releaseTag; cr.
+ fileNames do: [:fileName | strm nextPutAll: fileName; cr]].
+ strm close!
Item was added:
+ SakeInstaller subclass: #SakeFileInstaller
+ instanceVariableNames: 'afile'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Sake-Installer'!
Item was added:
+ SakeInstaller subclass: #SakeUpdateStreamInstaller
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Sake-Installer'!
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>loadUpdatesFromDisk (in category 'updates') -----
+ loadUpdatesFromDisk
+
+ | updateDirectory updateNumbers |
+ updateDirectory := self updateDirectoryOrNil.
+ updateDirectory ifNil: [^ self].
+ updateNumbers := updateDirectory fileNames
+ collect: [:fn | fn initialIntegerOrNil]
+ thenSelect: [:fn | fn notNil].
+
+ self loadUpdatesFromDiskToUpdateNumber: updateNumbers max
+ stopIfGap: false
+
+ !
Item was changed:
SakeInstaller subclass: #SakeXInstaller
+ instanceVariableNames: ''
+ classVariableNames: ''
- instanceVariableNames: 'afile sake'
- classVariableNames: 'Sake'
poolDictionaries: ''
category: 'Sake-Installer'!
!SakeXInstaller commentStamp: 'mtf 10/1/2008 22:24' prior: 0!
I am a copy of Installer as of Installer-Core-kph.232. I am being split up.
I am called SakeXInstaller because I stand-in for Sake{MC,SM,Mantis,Web,etc}Installer!
Item was added:
+ ----- Method: SakeSakeInstaller class>>sake (in category 'accessing') -----
+ sake
+
+ ^ Sake ifNil: [ self classPackages current ]!
Item was added:
+ ----- Method: SakeFileInstaller class>>installFile: (in category 'instanciation') -----
+ installFile: fileName
+
+ ^ (self file: fileName) install.
+ !
Item was added:
+ ----- Method: SakeFileInstaller>>basicView (in category 'basic interface') -----
+ basicView
+
+ self view: self file from: (FileDirectory readOnlyFileNamed: self file).
+
+ !
Item was added:
+ ----- Method: SakeFileInstaller>>basicInstall (in category 'basic interface') -----
+ basicInstall
+
+ self install: self file from: (FileDirectory default readOnlyFileNamed: self file)
+
+ !
Item was added:
+ ----- Method: SakeInstaller class>>sake: (in category 'sake-sake') -----
+ sake: aSakePackagesClass
+
+ ^ SakeSakeInstaller new sake: aSakePackagesClass!
Item was added:
+ ----- Method: SakeFileInstaller class>>file: (in category 'instanciation') -----
+ file: fileName
+
+ ^ SakeFileInstaller new file: fileName; yourself
+ !
Item was changed:
----- Method: SakeInstaller>>install (in category 'public interface') -----
install
"self logErrorDuring: [
self sake ifNotNil: [ ^ self sakeInstall ].
- self file ifNotNil: [ ^ self fileInstall ].
]"
self logErrorDuring: [self basicInstall]!
Item was added:
+ ----- Method: SakeFileInstaller>>basicBrowse (in category 'basic interface') -----
+ basicBrowse
+
+ self browse: self file from: (FileDirectory readOnlyFileNamed: self file).
+
+ !
Item was added:
+ ----- Method: SakeInstaller class>>setSakeToUse: (in category 'sake-sake') -----
+ setSakeToUse: aClass
+
+ SakeSakeInstaller sake: aClass!
Item was added:
+ ----- Method: SakeInstaller class>>sake (in category 'sake-sake') -----
+ sake
+
+ ^ self sake: SakeSakeInstaller sake!
Item was added:
+ ----- Method: SakeSakeInstaller>>sake: (in category 'websqueakmap') -----
+ sake: aSakePackagesClass
+
+ sake := aSakePackagesClass!
Item was added:
+ ----- Method: SakeFileInstaller>>file (in category 'accessing') -----
+ file
+
+ ^ afile!
Item was changed:
----- Method: SakeInstaller>>view (in category 'public interface') -----
view
-
- "self logErrorDuring: [
- self file ifNotNil: [ ^ self fileView ].
- ]"
-
self logErrorDuring: [self basicView]!
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>updateDirectoryOrNil (in category 'updates') -----
+ updateDirectoryOrNil
+
+ ^ (FileDirectory default directoryNames includes: 'updates')
+ ifTrue: [FileDirectory default directoryNamed: 'updates']
+ ifFalse: [self inform: 'Error: cannot find "updates" folder'.
+ nil]!
Item was added:
+ ----- Method: SakeSakeInstaller>>sake (in category 'websqueakmap') -----
+ sake
+
+ ^ sake !
Item was added:
+ SakeInstaller subclass: #SakeSakeInstaller
+ instanceVariableNames: 'sake'
+ classVariableNames: 'Sake'
+ poolDictionaries: ''
+ category: 'Sake-Installer'!
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>parseUpdateListContents: (in category 'updates') -----
+ parseUpdateListContents: listContentString
+ "Parse the contents of an updates.list into {{releaseTag. {fileNames*}}*}, and return it."
+
+ | sections releaseTag strm line fileNames |
+ sections := OrderedCollection new.
+ fileNames := OrderedCollection new: 1000.
+ releaseTag := nil.
+ strm := ReadStream on: listContentString.
+ [strm atEnd] whileFalse:
+ [line := strm upTo: Character cr.
+ line size > 0 ifTrue:
+ [line first = $#
+ ifTrue: [releaseTag ifNotNil: [sections addLast: {releaseTag. fileNames asArray}].
+ releaseTag := line allButFirst.
+ fileNames resetTo: 1]
+ ifFalse: [line first = $* ifFalse: [fileNames addLast: line]]]].
+ releaseTag ifNotNil: [sections addLast: {releaseTag. fileNames asArray}].
+ ^ sections asArray
+ !
Item was added:
+ ----- Method: SakeFileInstaller>>file: (in category 'accessing') -----
+ file: f
+
+ afile := f!
Item was changed:
----- Method: SakeInstaller>>browse (in category 'public interface') -----
browse
-
- "self logErrorDuring: [
- self file ifNotNil: [ ^ self fileBrowse ].
- ]"
-
self logErrorDuring: [self basicBrowse]!
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>changesetNamesFromUpdates:through: (in category 'updates') -----
+ changesetNamesFromUpdates: startNumber through: stopNumber
+ "Answer the concatenation of summary strings for updates numbered in the given range"
+ "self new changesetNamesFromUpdates: 7059 through: 7061"
+
+ ^ String streamContents: [:aStream |
+ ((ChangeSet changeSetsNamedSuchThat:
+ [:aName | aName first isDigit and:
+ [aName initialIntegerOrNil >= startNumber] and:
+ [aName initialIntegerOrNil <= stopNumber]]) asSortedCollection:
+ [:a :b | a name < b name]) do:
+ [:aChangeSet | aStream cr; nextPutAll: aChangeSet summaryString]]
+
+
+
+ !
Item was added:
+ ----- Method: SakeSakeInstaller>>sakeInstall (in category 'actions') -----
+ sakeInstall
+
+ self withAnswersDo: [ (self packages collect: [ :packageName | sake named: packageName ]) asTask run ].
+ !
Item was added:
+ ----- Method: SakeUpdateStreamInstaller>>loadUpdatesFromDiskToUpdateNumber:stopIfGap: (in category 'updates') -----
+ loadUpdatesFromDiskToUpdateNumber: lastUpdateNumber stopIfGap: stopIfGapFlag
+ "To use this mechanism, be sure all updates you want to have considered
+ are in a folder named 'updates' which resides in the same directory as
+ your image. Having done that, simply evaluate:
+
+ Installer new loadUpdatesFromDiskToUpdateNumber: 100020 stopIfGap: false
+
+ and all numbered updates <= lastUpdateNumber not yet in the image will
+ be loaded in numerical order."
+
+ "apparently does not use the updatelist too bad!! and to rewrite - sd 7 March 2008"
+ | previousHighest currentUpdateNumber done fileNames aMessage updateDirectory loaded |
+ updateDirectory := self updateDirectoryOrNil.
+ updateDirectory ifNil: [^ self].
+ previousHighest := SystemVersion current highestUpdate.
+ currentUpdateNumber := previousHighest.
+ done := false.
+ loaded := 0.
+ [done]
+ whileFalse: [currentUpdateNumber := currentUpdateNumber + 1.
+ currentUpdateNumber > lastUpdateNumber
+ ifTrue: [done := true]
+ ifFalse: [fileNames := updateDirectory fileNamesMatching: currentUpdateNumber printString , '*'.
+ fileNames size > 1
+ ifTrue: [^ self inform: 'ambiguity -- two files both start with ' , currentUpdateNumber printString , '
+ (at this point it is probably best to remedy
+ the situation on disk, then try again.)'].
+ fileNames size == 0
+ ifTrue: [Transcript cr; show: 'gap in updates from disk for update number '; print: currentUpdateNumber; show: ' found...'.
+ done := stopIfGapFlag]
+ ifFalse: [ChangeSet
+ newChangesFromStream: (updateDirectory readOnlyFileNamed: fileNames first)
+ named: fileNames first.
+ SystemVersion current registerUpdate: currentUpdateNumber.
+ loaded := loaded + 1]]].
+ aMessage := loaded = 0
+ ifTrue: ['No new updates found.']
+ ifFalse: [loaded printString , ' update(s) loaded.'].
+ self inform: aMessage , '
+ Highest numbered update is now ' , (currentUpdateNumber - 1) printString , '.'!
Item was added:
+ ----- Method: SakeSakeInstaller class>>classPackages (in category 'accessing system') -----
+ classPackages
+
+ ^Smalltalk at: #Packages ifAbsent: [ self error: 'Sake Packages code not present' ]!
Item was added:
+ ----- Method: SakeSakeInstaller class>>sake: (in category 'accessing') -----
+ sake: aClass
+
+ Sake := aClass!
Item was removed:
- ----- Method: SakeXInstaller>>updateDirectoryOrNil (in category 'updates') -----
- updateDirectoryOrNil
-
- ^ (FileDirectory default directoryNames includes: 'updates')
- ifTrue: [FileDirectory default directoryNamed: 'updates']
- ifFalse: [self inform: 'Error: cannot find "updates" folder'.
- nil]!
Item was removed:
- ----- Method: SakeXInstaller>>file: (in category 'accessing') -----
- file: f
-
- afile := f!
Item was removed:
- ----- Method: SakeXInstaller>>fileInstall (in category 'file') -----
- fileInstall
-
- self install: self file from: (FileDirectory default readOnlyFileNamed: self file)
-
- !
Item was removed:
- ----- Method: SakeXInstaller>>sakeInstall (in category 'actions') -----
- sakeInstall
-
- self withAnswersDo: [ (self packages collect: [ :packageName | sake named: packageName ]) asTask run ].
- !
Item was removed:
- ----- Method: SakeXInstaller>>parseUpdateListContents: (in category 'updates') -----
- parseUpdateListContents: listContentString
- "Parse the contents of an updates.list into {{releaseTag. {fileNames*}}*}, and return it."
-
- | sections releaseTag strm line fileNames |
- sections := OrderedCollection new.
- fileNames := OrderedCollection new: 1000.
- releaseTag := nil.
- strm := ReadStream on: listContentString.
- [strm atEnd] whileFalse:
- [line := strm upTo: Character cr.
- line size > 0 ifTrue:
- [line first = $#
- ifTrue: [releaseTag ifNotNil: [sections addLast: {releaseTag. fileNames asArray}].
- releaseTag := line allButFirst.
- fileNames resetTo: 1]
- ifFalse: [line first = $* ifFalse: [fileNames addLast: line]]]].
- releaseTag ifNotNil: [sections addLast: {releaseTag. fileNames asArray}].
- ^ sections asArray
- !
Item was removed:
- ----- Method: SakeXInstaller class>>classPackages (in category 'accessing system') -----
- classPackages
-
- ^Smalltalk at: #Packages ifAbsent: [ self error: 'Sake Packages code not present' ]!
Item was removed:
- ----- Method: SakeXInstaller class>>sake: (in category 'instanciation') -----
- sake: aSakePackagesClass
-
- ^ self new sake: aSakePackagesClass!
Item was removed:
- ----- Method: SakeXInstaller>>changesetNamesFromUpdates:through: (in category 'updates') -----
- changesetNamesFromUpdates: startNumber through: stopNumber
- "Answer the concatenation of summary strings for updates numbered in the given range"
- "self new changesetNamesFromUpdates: 7059 through: 7061"
-
- ^ String streamContents: [:aStream |
- ((ChangeSet changeSetsNamedSuchThat:
- [:aName | aName first isDigit and:
- [aName initialIntegerOrNil >= startNumber] and:
- [aName initialIntegerOrNil <= stopNumber]]) asSortedCollection:
- [:a :b | a name < b name]) do:
- [:aChangeSet | aStream cr; nextPutAll: aChangeSet summaryString]]
-
-
-
- !
Item was removed:
- ----- Method: SakeXInstaller>>loadUpdatesFromDiskToUpdateNumber:stopIfGap: (in category 'updates') -----
- loadUpdatesFromDiskToUpdateNumber: lastUpdateNumber stopIfGap: stopIfGapFlag
- "To use this mechanism, be sure all updates you want to have considered
- are in a folder named 'updates' which resides in the same directory as
- your image. Having done that, simply evaluate:
-
- Installer new loadUpdatesFromDiskToUpdateNumber: 100020 stopIfGap: false
-
- and all numbered updates <= lastUpdateNumber not yet in the image will
- be loaded in numerical order."
-
- "apparently does not use the updatelist too bad!! and to rewrite - sd 7 March 2008"
- | previousHighest currentUpdateNumber done fileNames aMessage updateDirectory loaded |
- updateDirectory := self updateDirectoryOrNil.
- updateDirectory ifNil: [^ self].
- previousHighest := SystemVersion current highestUpdate.
- currentUpdateNumber := previousHighest.
- done := false.
- loaded := 0.
- [done]
- whileFalse: [currentUpdateNumber := currentUpdateNumber + 1.
- currentUpdateNumber > lastUpdateNumber
- ifTrue: [done := true]
- ifFalse: [fileNames := updateDirectory fileNamesMatching: currentUpdateNumber printString , '*'.
- fileNames size > 1
- ifTrue: [^ self inform: 'ambiguity -- two files both start with ' , currentUpdateNumber printString , '
- (at this point it is probably best to remedy
- the situation on disk, then try again.)'].
- fileNames size == 0
- ifTrue: [Transcript cr; show: 'gap in updates from disk for update number '; print: currentUpdateNumber; show: ' found...'.
- done := stopIfGapFlag]
- ifFalse: [ChangeSet
- newChangesFromStream: (updateDirectory readOnlyFileNamed: fileNames first)
- named: fileNames first.
- SystemVersion current registerUpdate: currentUpdateNumber.
- loaded := loaded + 1]]].
- aMessage := loaded = 0
- ifTrue: ['No new updates found.']
- ifFalse: [loaded printString , ' update(s) loaded.'].
- self inform: aMessage , '
- Highest numbered update is now ' , (currentUpdateNumber - 1) printString , '.'!
Item was removed:
- ----- Method: SakeXInstaller class>>setSakeToUse: (in category 'instanciation') -----
- setSakeToUse: aClass
-
- Sake := aClass!
Item was removed:
- ----- Method: SakeXInstaller class>>sake (in category 'instanciation') -----
- sake
-
- ^ self sake: (Sake ifNil: [ self classPackages current ])!
Item was removed:
- ----- Method: SakeXInstaller>>sake (in category 'websqueakmap') -----
- sake
-
- ^ sake !
Item was removed:
- ----- Method: SakeXInstaller>>writeList:toStream: (in category 'updates') -----
- writeList: listContents toStream: strm
- "Write a parsed updates.list out as text.
- This is the inverse of parseUpdateListContents:"
-
- | fileNames releaseTag |
- strm reset.
- listContents do:
- [:pair |
- releaseTag := pair first.
- fileNames := pair last.
- strm nextPut: $#; nextPutAll: releaseTag; cr.
- fileNames do: [:fileName | strm nextPutAll: fileName; cr]].
- strm close!
Item was removed:
- ----- Method: SakeXInstaller>>loadUpdatesFromDisk (in category 'updates') -----
- loadUpdatesFromDisk
-
- | updateDirectory updateNumbers |
- updateDirectory := self updateDirectoryOrNil.
- updateDirectory ifNil: [^ self].
- updateNumbers := updateDirectory fileNames
- collect: [:fn | fn initialIntegerOrNil]
- thenSelect: [:fn | fn notNil].
-
- self loadUpdatesFromDiskToUpdateNumber: updateNumbers max
- stopIfGap: false
-
- !
Item was removed:
- ----- Method: SakeXInstaller>>fileView (in category 'file') -----
- fileView
-
- self view: self file from: (FileDirectory readOnlyFileNamed: self file).
-
- !
Item was removed:
- ----- Method: SakeXInstaller>>sake: (in category 'websqueakmap') -----
- sake: aSakePackagesClass
-
- sake := aSakePackagesClass!
Item was removed:
- ----- Method: SakeXInstaller>>file (in category 'accessing') -----
- file
-
- ^ afile!
Item was removed:
- ----- Method: SakeXInstaller class>>installFile: (in category 'instanciation') -----
- installFile: fileName
-
- ^ (self file: fileName) install.
- !
Item was removed:
- ----- Method: SakeXInstaller>>fileBrowse (in category 'file') -----
- fileBrowse
-
- self browse: self file from: (FileDirectory readOnlyFileNamed: self file).
-
- !
Item was removed:
- ----- Method: SakeXInstaller class>>file: (in category 'instanciation') -----
- file: fileName
-
- ^ self new file: fileName; yourself
- !
More information about the Packages
mailing list