A new version of Packages-Core was added to project Packages: http://www.squeaksource.com/Packages/Packages-Core-kph.51.mcz
==================== Summary ====================
Name: Packages-Core-kph.51 Author: kph Time: 18 August 2008, 12:27:32 am UUID: d6e5459b-c662-49f5-bcfb-0b82d846fc91 Ancestors: Packages-Core-kph.50
added validation of categories... - definition methods are categorised according to the metadata.
added worksIn: field, so that one definition can be broadcast to multiple classes.
added task which copies a definition to the classes listed in worksIn.
=============== Diff against Packages-Core-kph.50 ===============
Item was added: + ----- Method: Packages class>>taskPropagateWorksIn (in category 'tasks - universes') ----- + taskPropagateWorksIn + + ^ SakeTask define: [ :task | + + task action: [ + self selectors do: [ :sel | + (self named: sel) worksIn ifNotNilDo: [ :list | + list first = self name ifTrue: [ + list allButFirstDo: [ :ea | + (Smalltalk classNamed: ea) addSelector: sel withMethod: (self compiledMethodAt: sel) method notifying: nil. + ] + ] + ] + ]. + ] + ] + + + !
Item was changed: ----- Method: Packages>>worksIn (in category 'as yet unclassified') ----- + worksIn - worksIn - ^ self info worksIn!
Item was added: + ----- Method: Packages class>>taskValidate (in category 'tasks - universes') ----- + taskValidate + + " + self taskValidateAll run. + " + + ^ SakeTask define: [ :task | + + task action: { self taskPropagateWorksIn. + self taskValidateCategories } + + ] + !
Item was added: + ----- Method: Packages class>>taskValidateCategories (in category 'tasks - universes') ----- + taskValidateCategories + + ^ SakeTask define: [ :task | + + task action: [ + self selectors do: [ :sel | + self organization classify: sel under: (((self named: sel) info category) ifNil: [ 'as yet unclassified' ]) + ]. + self organization removeEmptyCategories. + ] + ] + + + !
Item was added: + ----- Method: Packages class>>taskValidateAll (in category 'tasks - universes') ----- + taskValidateAll + + " + self taskValidateAll run. + " + + ^ SakeTask define: [ :task | + + task action: + + (PackagesAllVersions allSubclasses select: [ :each | each initialize isUniverse ] thenCollect: [ :sc | sc taskValidate ]). + + ] + !
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 supports: #( ' << self class name << ' )'; cr ; cr. - source << ' self version: ''' << each version << '''.' ; 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 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. ]. ]!
packages@lists.squeakfoundation.org