[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
|