[Pkg] Packages: Packages-Core-kph.52.mcz

squeaksource-noreply at iam.unibe.ch squeaksource-noreply at iam.unibe.ch
Mon Aug 18 00:19:22 UTC 2008


A new version of Packages-Core was added to project Packages:
http://www.squeaksource.com/Packages/Packages-Core-kph.52.mcz

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

Name: Packages-Core-kph.52
Author: kph
Time: 18 August 2008, 1:19:20 am
UUID: c01e4939-5ae1-48f9-aae3-31d2623c4236
Ancestors: Packages-Core-kph.51

Added default action which uses the url form the metadata.

This reduces the number of arbitrary scripts and makes things essentially data driven.

=============== Diff against Packages-Core-kph.51 ===============

Item was added:
+ ----- Method: Packages>>isUnloading (in category 'as yet unclassified') -----
+ isUnloading
+ 
+ 	^ isUnload = true!

Item was changed:
  SakeTask subclass: #Packages
+ 	instanceVariableNames: 'unloadBlock unloadPriors provides name version isUnload'
- 	instanceVariableNames: 'unloadBlock unloadPriors provides name version'
  	classVariableNames: 'Provided'
  	poolDictionaries: ''
  	category: 'Packages-Core'!
  Packages class
  	instanceVariableNames: 'lastUpdate theUUniverse'!
  
  !Packages commentStamp: 'kph 5/16/2008 01:40' prior: 0!
  To generate all of the methods based upon universes definitions:
  	
   	Packages taskGenerateAllUniverses run.
  	or
  	Packages taskGenerateAll  run.
  
  Sake/Packages usage:
  
  Public API
  ============
  "load package definition for your current version of Squeak"
  Packages current load: 'Seaside'.
  Packages beta named: 'Seaside'.
  
  or
  
  (Packages current named: 'Seaside') run.  " or runQuietly, runStepping, runLogging"
  (Packages beta named: 'Seaside') run.
  
  multiples:
  
  Packages current load: #('Seaside' 'Magma' 'Logging')  
  
  Run-variants
  =========
  
  #runStepping , - presents a confirm/debug dialog before each action.
  #run                 - default.
  #runQuietly     - auto-confirms any SakeConfirm dialogs.
  #runLogging    - Writes any SakeStop warnings to self log.
  
  Unloading
  ========
  Unloading comes in two variants.
  
  Each package task loaded by Sake/Packages is remembered in the 'provided' list
  If you perform:
  
      Packages unload: 'Seaside' .
  
      Packages unloadStepping: 'Seaside' .
  
  Then the 'historical' unload scripts are used, as defined when the original load tasks were run.
  
  If instead you perform:
  
      (Packages current named: 'Seaside') unload runStepping.
   
  Then the most recently defined unload script will be run.
  
  Note: If packages such as "Magma server" and "Magma client" provides "Magma", then
  
      Packages unload: 'Magma'.
  
  Will unload whichever of the two are loaded.
  ===
  Misc notes...
  
  Universes are using 'instance side' task definition, so the task extensions mechanism does not work in this context.
  
  !

Item was added:
+ ----- Method: Packages>>dependsOn (in category 'as yet unclassified') -----
+ dependsOn
+ 
+ 	self isUnloading ifFalse: [ ^ super dependsOn ].
+ 	
+ 	unloadPriors ifNil: [ self unloadDependsOn: self loadedDependantsUnloadTasks ].
+ 	
+ 	^ unloadPriors!

Item was added:
+ ----- Method: Packages>>doActionStep (in category 'as yet unclassified') -----
+ doActionStep
+ 
+ 	 self isUnloading 
+ 		ifTrue: [ self step: 'Confirm unload: ', self name printString ]
+ 		ifFalse: [ self step: 'Confirm load: ', self name printString ]!

Item was added:
+ ----- Method: Packages>>defaultUnloadAction (in category 'as yet unclassified') -----
+ defaultUnloadAction
+ 
+ 	self info url ifNotNil: [ Installer mc unload: self name ]!

Item was added:
+ ----- Method: Packages>>loadedDependantsUnloadTasks (in category 'as yet unclassified') -----
+ loadedDependantsUnloadTasks
+ 
+ 	"if the task is the provided one, then we return the provided dependants."
+ 	
+ 	self loadedDependants in: [ :deps |
+ 	
+ 		deps ifEmpty: [ ^ #() ].
+ 	
+ 	 	^ (self class provided at: self name ifAbsent: nil) == self
+ 			ifTrue: [ (deps collect: [ :ea | ea copy beUnloading ]) ]
+ 			ifFalse: [ (deps collect: [ : ea | (self class named: ea name) beUnloading ]) ]
+ 	].!

Item was added:
+ ----- Method: Packages>>doActionEnd (in category 'as yet unclassified') -----
+ doActionEnd
+ 
+ 	self isUnloading ifTrue: [ ^ self ].
+ 	
+ 	self class provided in: [ :reg |
+ 		info := nil.
+ 		self provides do: [ :each | reg at: each put: self ].
+ 	].
+ 
+ 	^ nil!

Item was added:
+ ----- Method: Packages>>defaultAction (in category 'as yet unclassified') -----
+ defaultAction
+ 
+ 	Installer installUrl: self info url!

Item was changed:
  ----- Method: Packages class>>taskGenerateUniversePackageTasks (in category 'tasks - universes') -----
  taskGenerateUniversePackageTasks
  
  | source selector |
  ^ SakeTask define: [ :task | 
  	
  	task dependsOn: { 
  	
  		[ self isUniverse ]. 
   		self taskUpdateUniverse.
  		self taskRemoveOldPackages.
  	}.
  
  	task action: [ 
  		(self theUUniverse packageNames collect: [ :each | self theUUniverse newestPackageNamed: each ]) do: [ :each | 
  			source := (WriteStream on: String new).
  				source << (selector := self asSelector: each name).
  				source cr; cr.
  				source << '	self name: ' << each name printString << '.' ; cr.
  				source << '	self version: ''' << each version << '''.' ; cr.
+ 				source << '	info worksIn: #( ' << self class name << ' )'; cr ; cr.					
- 				source << '	info supports: #( ' << self class name << ' )'; cr ; cr.					
  				source << '	info category: ''' << each category printString << '''.' ; cr.
  				source << '	info description: ' ; cr.
  				source << each description withSqueakLineEndings printString << '.' ; cr.
  				source << '	info maintainer: ''' << each maintainer << '''.' ; cr.
  				source << '	info homepage: ''' << (each homepage ifNil: ['']) asString << '''.' ; cr.					
  				source << '	info squeakMapID: ''' << (each squeakMapID ifNil: [''])  asString << '''.' ; cr.					
  				source << '	info url: ''' << each url printString << '''.' ; cr.					
  				source << '	self provides: ' << each provides asArray printString << '.' ; cr ; cr.				
  				source << '	self dependsOn: ' << each depends asSortedCollection asArray printString << '.' ; cr ; cr.
+  
- 				source << '	self load: [' ; cr.
- 
- each url ifNotNil: [					
- 				source << '		Installer installUrl:''' << each url printString << '''.' ; cr.	
- ].
- 				source << '	].' ; cr ; cr.
- 				"source << '	self unloadDependsOn: { self taskUnloadDependants }.'  ; cr."
- 				source << '	self unload: [' ; cr.
- each url ifNotNil: [					
-  				source << '		Installer mc unload: ' << each name printString << '.' ; cr.	
- ].
- 				source << '	].'.	
- 			 
  			(self sourceCodeAt: selector ifAbsent: nil)	 ~= source contents ifTrue: [								 
  			 
  				self compile: source contents classified: each category printString notifying: nil
  			]
  		].
  		theUUniverse := nil.
  	].	
  ]!

Item was changed:
  ----- Method: Packages>>beUnloading (in category 'as yet unclassified') -----
  beUnloading
  
+ 	isUnload := true.
- 	actionBlock := unloadBlock.
- 		
- 	(unloadPriors ifNil: [ self unloadDependsOn: (Array with: self taskUnloadDependants) ]).
- 	
- 	priors := unloadPriors.
- 	
  	hasRun := false.!

Item was added:
+ ----- Method: Packages>>action (in category 'as yet unclassified') -----
+ action
+ 
+ 	self isUnloading 
+ 		ifTrue: [ unloadBlock ifNil: [ [ self defaultUnloadAction ] ] ]
+ 		ifFalse: [ super action ].!

Item was removed:
- ----- Method: Packages>>doAction (in category 'as yet unclassified') -----
- doAction
- 
- 	actionBlock == unloadBlock
- 		ifTrue: [ self step: 'Confirm unload: ', self name printString ]
- 		ifFalse: [ self step: 'Confirm load: ', self name printString ].
- 
- 	actionBlock value.
- 	
- 	self class provided in: [ :reg |
- 		info := nil.
- 		self provides do: [ :each | reg at: each put: self ].
- 	].
- 
- 	^ nil!

Item was removed:
- ----- Method: Packages>>taskUnloadDependants (in category 'as yet unclassified') -----
- taskUnloadDependants
- 
- 	"if the task is the provided one, then we return the provided dependants."
- 	
- 	self loadedDependants in: [ :deps |
- 	
- 		deps ifEmpty: [ ^ nil ].
- 	
- 	 	^ (self class provided at: self name ifAbsent: nil) == self
- 			ifTrue: [ (deps collect: [ :ea | ea copy beUnloading ]) asTask ]
- 			ifFalse: [ (deps collect: [ : ea | (self class named: ea name) beUnloading ]) asTask ]
- 	].!



More information about the Packages mailing list