[squeak-dev] The Trunk: SMLoader-cmm.72.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Feb 12 22:50:40 UTC 2011


Chris Muller uploaded a new version of SMLoader to project The Trunk:
http://source.squeak.org/trunk/SMLoader-cmm.72.mcz

==================== Summary ====================

Name: SMLoader-cmm.72
Author: cmm
Time: 10 February 2011, 11:28:58.024 am
UUID: 6b851d34-45c7-4697-b729-576a2e557fc3
Ancestors: SMLoader-cmm.71

- Use SMSqueakMap class>>#findServer for smUrl rather than hard-coded.
- Fix for sorting 'head' release to the beginning of package releases.
- Delete the install file after uploading / saving.
- When saving, we need to actually save twice.  First without a downloadUrl so that SM will update its cache, and then again to save the downloadUrl and refresh its sha1sum.
- Warn before replacing the install and delete it when done.

=============== Diff against SMLoader-cmm.71 ===============

Item was changed:
  ----- Method: SMClient>>smUrl (in category 'private') -----
  smUrl
+ 	^ 'http://', SMSqueakMap findServer!
- 	^ 'http://map.squeak.org' "'http://localhost:9091'"!

Item was changed:
  ----- Method: SMLoaderPlus>>sortReleases: (in category 'private') -----
  sortReleases: anOrderedCollection 
  	"SqueakMap stores them in chronological order, let's list them in reverse-chronological order for easy-selection."
  	| answer headIndex |
  	answer := anOrderedCollection reversed.
  	"After that, look for the 'head' release, put it to the top."
+ 	headIndex := answer findFirst:
- 	headIndex := anOrderedCollection findFirst:
  		[ : each | each version = 'head' ].
  	headIndex > 1 ifTrue: [ answer addFirst: (answer removeAt: headIndex) ].
  	^ answer!

Item was added:
+ ----- Method: SMReleaseBrowser>>deleteInstallFile (in category 'private') -----
+ deleteInstallFile
+ 	FileDirectory default deleteFileNamed: release scriptName!

Item was added:
+ ----- Method: SMReleaseBrowser>>downloadUrl (in category 'private') -----
+ downloadUrl
+ 	^ self smAccount downloadsDirectory , '/' , release scriptName!

Item was changed:
  ----- Method: SMReleaseBrowser>>save (in category 'initialize-release') -----
  save
  	"Save the release to SqueakMap."
  	self validateCanSave.
+ 	Cursor wait showWhile:
+ 		[ self dependents do:
+ 			[ : eachWidget | #(#username #password #note #version #content ) do:
+ 				[ : eachName | eachWidget knownName = eachName ifTrue:
+ 					[ eachWidget hasUnacceptedEdits ifTrue: [ eachWidget accept ] ] ] ].
+ 		[ self
+ 			 writeInstallFile ;
+ 			 login.
+ 		"Save without a downloadUrl so that SM will update its cache and we can also verify success before uploading the file."
+ 		self savePackageRelease: nil.
+ 		self loadScript isEmptyOrNil ifFalse:
+ 			[ self uploadInstallFile.
+ 			release package addRelease: release.
+ 			"Now save with the correct downloadUrl."
+ 			self
+ 				 savePackageRelease: self downloadUrl ;
+ 				 deleteInstallFile ] ] ensure: [ self logout ] ].
- 	Cursor wait
- 		showWhile: [self dependents
- 				do: [:eachWidget | #(#username #password #note #version #content )
- 						do: [:eachName | eachWidget knownName = eachName
- 								ifTrue: [eachWidget hasUnacceptedEdits
- 										ifTrue: [eachWidget accept]]]].
- 			[self writeInstallFile; login.
- 			self savePackageRelease.
- 			self loadScript isEmptyOrNil
- 				ifFalse: [self uploadInstallFile]]
- 				ensure: [self logout]].
  	self closeWindow!

Item was removed:
- ----- Method: SMReleaseBrowser>>savePackageRelease (in category 'private') -----
- savePackageRelease
- 	"We actually save the package-release to the users who is posting it,
- 	even if that is different than the owner."
- 	| response |
- 	release downloadUrl: self smAccount downloadsDirectory , '/' , release scriptName.
- 	response := smClient save: release.
- 	(response isSuccess not
- 			or: [#('error' 'failed' )
- 					anySatisfy: [:each | response content includesSubstring: each caseSensitive: false]])
- 		ifTrue: [self error: 'failed']
- 		ifFalse: [release package addRelease: release]!

Item was added:
+ ----- Method: SMReleaseBrowser>>savePackageRelease: (in category 'private') -----
+ savePackageRelease: downloadUrlString 
+ 	"We actually save the package-release to the users who is posting it, even if that is different than the owner."
+ 	| response |
+ 	"Set sha1sum so it will be 'correct' until the next update from the SM server."
+ 	release
+ 		 downloadUrl: downloadUrlString ;
+ 		 sha1sum: nil.
+ 	response := smClient save: release.
+ 	(response isSuccess not or:
+ 		[ #('error' 'failed' ) anySatisfy:
+ 			[ : each | response content
+ 				includesSubstring: each
+ 				caseSensitive: false ] ]) ifTrue: [ self error: 'failed' ]!

Item was changed:
  ----- Method: SMReleaseBrowser>>writeInstallFile (in category 'private') -----
  writeInstallFile
  	(FileDirectory default fileExists: release scriptName)
  		ifTrue: [Warning signal: release scriptName , ' already exists and will be deleted.'].
+ 	self deleteInstallFile.
- 	FileDirectory default deleteFileNamed: release scriptName.
  	FileStream
  		fileNamed: release scriptName
+ 		do: [:stream | stream nextPutAll: self loadScript asString]!
- 		do: [:stream | stream nextPutAll: self loadScript asString].
- 	FileDirectory default deleteFileNamed: release scriptName!




More information about the Squeak-dev mailing list