[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