[Pkg] The Trunk: SMLoader-cmm.65.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Feb 12 22:49:24 UTC 2011
Chris Muller uploaded a new version of SMLoader to project The Trunk:
http://source.squeak.org/trunk/SMLoader-cmm.65.mcz
==================== Summary ====================
Name: SMLoader-cmm.65
Author: cmm
Time: 30 January 2011, 2:11:06.8 pm
UUID: 38a005b8-5df6-44eb-8ae5-6f0016fab290
Ancestors: SMLoader-cmm.64
- List releases in SqueakMap package-loader by newest to oldest rather than oldest-to-newest (which guarantees to require scrolling as releases grow), and, also, if there is a release named 'head', put it at the top.
- Honor the reuseWindows preference.
- Fixes.
=============== Diff against SMLoader-cmm.64 ===============
Item was changed:
----- Method: SMLoaderPlus>>itemChildren: (in category 'interface') -----
itemChildren: anItem
^ anItem isPackage
+ ifTrue: [ self sortReleases: anItem releases ]
+ ifFalse: [ #() ]!
- ifTrue: [anItem releases]
- ifFalse: [#()]!
Item was added:
+ ----- Method: SMLoaderPlus>>representsSameBrowseeAs: (in category 'private') -----
+ representsSameBrowseeAs: anotherSMLoaderPlus
+ ^ true!
Item was added:
+ ----- 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 := anOrderedCollection findFirst:
+ [ : each | each version = 'head' ].
+ headIndex > 1 ifTrue: [ answer addFirst: (answer removeAt: headIndex) ].
+ ^ answer!
Item was changed:
----- Method: SMPackageRelease>>fullyQualifiedScriptName (in category '*smloader') -----
fullyQualifiedScriptName
+ ^ self package owner downloadsDirectory , '/', self scriptName !
- ^ self package owner downloadsDirectory , self scriptName !
Item was changed:
----- Method: SMPackageRelease>>httpPostContent (in category '*smloader') -----
httpPostContent
"Answer the url-encoded parameters for this object."
| allCategories |
+ ^ String streamContents:
+ [ : stream | self isNewObject
+ ifTrue:
+ [ "Make the parent release the selected."
+ self parentReleaseIndex > 0 ifTrue: [ stream nextPutAll: '1-1=' , self parentReleaseIndex , '&' ] ]
+ ifFalse:
+ [ "Make this release the selected."
+ self releaseIndex > 0 ifTrue: [ stream nextPutAll: '1-1=' , self releaseIndex , '&' ] ].
- ^ String streamContents: [ : stream | | isNew |
- isNew := self isNewObject.
- "releaseIndex is dependent on my being one of my package's releases."
- self package addRelease: self.
- self releaseIndex > 0 ifTrue: [stream nextPutAll: '1-1=', (self releaseIndex) , '&' ].
- stream
- nextPutAll: '1-3=', self version asString encodeForHTTP ;
"The following category fields must remain in alphabetical order. Add 1 to category indexes because web-server expects the first item to always be nil."
+ stream
+ nextPutAll: '1-3=' , self version asString encodeForHTTP ;
+ nextPutAll: '&1-4=' , (self compatibilityIndex + 1) ;
+ nextPutAll: '&1-5=' , (self licenseIndex + 1) ;
+ nextPutAll: '&1-6=' , (self maturityIndex + 1) ;
+ nextPutAll: '&1-7=' , (self squeakVersionIndex + 1) ;
+ nextPutAll: '&1-8=' , self downloadUrl "already http encoded" ;
+ nextPutAll: '&1-9=1&1-10=&1-11=' "No file selection, 'cool' name or summary".
- nextPutAll: '&1-4=', (self compatibilityIndex+1) ;
- nextPutAll: '&1-5=', (self licenseIndex+1) ;
- nextPutAll: '&1-6=', (self maturityIndex+1) ;
- nextPutAll: '&1-7=', (self squeakVersionIndex+1) ;
- nextPutAll: '&1-8=', self downloadUrl "already http encoded" ;
- nextPutAll: '&1-9=1&1-10=&1-11=' "No file selection, 'cool' name or summary".
"Specify only the mandatory categories for 'additional categories', otherwise prior mandatory selections will be reflected in the objects categories, causing the highest-in-the-list to always win. Ugh.."
+ allCategories := SMSqueakMap default categories asSortedCollection:
+ [ : a : b | a name < b name ].
+ {allCategories indexOf: self compatibility.
+ allCategories indexOf: self license.
+ allCategories indexOf: self maturity.
+ allCategories indexOf: self squeakVersion} do:
+ [ : each | stream nextPutAll: '&1-12=' , each asString ].
+ stream nextPutAll: '&1-13=' , self note asString encodeForHTTP.
+ self isNewObject
+ ifTrue: [ stream nextPutAll: '&1-18=Save+as+new+release' ]
+ ifFalse: [ stream nextPutAll: '&1-17=Save+changes' ].
+ self parentRelease ifNotNilDo:
+ [ : pr | stream nextPutAll: '&1-19=' , pr releaseIndex ] ]!
- allCategories := SMSqueakMap default categories asSortedCollection: [ : a : b | a name < b name ].
- { allCategories indexOf: (self compatibility). allCategories indexOf: (self license). allCategories indexOf: (self maturity). allCategories indexOf: (self squeakVersion) } do:
- [ : each | stream nextPutAll: '&1-12=', each asString ].
- stream nextPutAll: '&1-13=', self note asString encodeForHTTP.
- isNew
- ifTrue: [ self stream nextPutAll: '&1-18=Save+as+new+release' ]
- ifFalse: [ stream nextPutAll: '&1-17=Save+changes' ].
- self parentRelease ifNotNilDo:
- [ : pr | stream
- nextPutAll: '&1-19=', pr releaseIndex ] ]!
Item was changed:
----- Method: SMPackageRelease>>isNewObject (in category '*smloader') -----
isNewObject
+ ^ (self package releases includes: self) not!
- ^ self package releases includes: self!
Item was added:
+ ----- Method: SMPackageRelease>>parentReleaseIndex (in category '*smloader') -----
+ parentReleaseIndex
+ "Answer my position in the list of my packages releases."
+ ^ self parentRelease
+ ifNil: [ 0 ]
+ ifNotNil: [ : pr | pr releaseIndex ]!
Item was changed:
----- Method: SMPackageRelease>>scriptName (in category '*smloader') -----
scriptName
+ ^ 'install-', self id asString, '.st'!
- ^ 'install', self id asString, '.st'!
Item was changed:
----- Method: SMReleaseBrowser>>newAuthenticationPane: (in category 'toolbuilder') -----
newAuthenticationPane: aToolBuilder
^ aToolBuilder pluggablePanelSpec new
model: self ;
children:
(OrderedCollection
with:
(aToolBuilder pluggableInputFieldSpec new
model: self ;
name: #username ;
help: 'Your SqueakMap Id.' ;
getText: #username ;
setText: #username: ;
frame: (0.02 at 0 corner: 0.38 at 1) ;
yourself)
with:
(aToolBuilder pluggableInputFieldSpec new
model: self ;
name: #password ;
help: 'Your SqueakMap password.' ;
getText: #password ;
setText: #password: ;
frame: (0.40 at 0 corner: 0.75 at 1) ;
yourself)
with:
(aToolBuilder pluggableButtonSpec new
model: self ;
+ help: 'Save this release to the SqueakMap server and close the window.' ;
- help: 'Save this release to the SqueakMap server' ;
label: 'Save' ;
action: #save ;
frame: (0.77 at 0 corner: 0.98 at 1) ;
yourself)) ;
yourself!
Item was added:
+ ----- Method: SMReleaseBrowser>>release (in category 'private') -----
+ release
+ ^ release!
Item was added:
+ ----- Method: SMReleaseBrowser>>representsSameBrowseeAs: (in category 'private') -----
+ representsSameBrowseeAs: anotherModel
+ ^ release = anotherModel release!
Item was changed:
----- Method: SMReleaseBrowser>>savePackageRelease (in category 'private') -----
savePackageRelease
| response |
release downloadUrl: release fullyQualifiedScriptName.
response := smClient save: release.
+ "Saved, now ensure part of my package's releases in the local copy of the model."
+ release package addRelease: release.
response isSuccess ifFalse: [ self halt: 'non-successful response' ]!
Item was changed:
----- Method: SMReleaseBrowser>>writeInstallFile (in category 'private') -----
writeInstallFile
+ FileDirectory default deleteFileNamed: release scriptName.
- | filename |
- filename := 'install' , release id asString , '.st'.
- FileDirectory default deleteFileNamed: filename.
FileStream
+ fileNamed: release scriptName
- fileNamed: filename
do:
[ : stream | stream nextPutAll: self loadScript asString ]!
More information about the Packages
mailing list