jan@65: "{ Package: 'stx:goodies/builder/reports' }"
jan@65:
jan@65: "{ NameSpace: Builder }"
jan@65:
jan@65: Report subclass:#ChangeReport
jan@65: instanceVariableNames:'gofer'
jan@65: classVariableNames:''
jan@65: poolDictionaries:''
jan@65: category:'Builder-Reports-Unfinished'
jan@65: !
jan@65:
jan@65:
jan@65: !ChangeReport methodsFor:'accessing'!
jan@65:
jan@65: changesFor: aResolvedVersion
jan@65: | references patch |
jan@65: references := gofer allResolved
jan@65: select: [ :each | each packageName = aResolvedVersion packageName ].
jan@65: patch := MCPatch
jan@65: fromBase: (references size > 1
jan@65: ifTrue: [ (references at: references size - 1) version snapshot ]
jan@65: ifFalse: [ MCSnapshot empty ])
jan@65: target: aResolvedVersion version snapshot.
jan@65: ^ patch operations asSortedCollection
jan@65: !
jan@65:
jan@65: resolved
jan@65: ^ gofer resolved
jan@65: ! !
jan@65:
jan@65: !ChangeReport methodsFor:'generating'!
jan@65:
jan@65: generateChange: aPatch on: aStream
jan@65: aPatch isAddition
jan@65: ifTrue: [ ^ self generateChangeAddition: aPatch on: aStream ].
jan@65: aPatch isModification
jan@65: ifTrue: [ ^ self generateChangeModification: aPatch on: aStream ].
jan@65: aPatch isRemoval
jan@65: ifTrue: [ ^ self generateChangeRemoval: aPatch on: aStream ]
jan@65: !
jan@65:
jan@65: generateChangeAddition: aPatch on: aStream
jan@65: aStream tab; tab; tab; nextPutAll: '- '; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '
'; nextPut: Character lf
jan@65: !
jan@65:
jan@65: generateChangeModification: aPatch on: aStream
jan@65: aStream tab; tab; tab; nextPutAll: '- '; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '
'; nextPut: Character lf
jan@65: !
jan@65:
jan@65: generateChangeRemoval: aPatch on: aStream
jan@65: aStream tab; tab; tab; nextPutAll: '- '; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '
'; nextPut: Character lf
jan@65: !
jan@65:
jan@65: generateChangeSet: aResolvedVersion on: aStream
jan@65: | info |
jan@65: info := aResolvedVersion version info.
jan@65: aStream tab; nextPutAll: ''; nextPut: Character lf.
jan@65: aStream tab; tab; nextPutAll: ''; nextPutAll: (self encode: info date yyyymmdd); space; nextPutAll: (self encode: info time print24); nextPutAll: ''; nextPut: Character lf.
jan@65: aStream tab; tab; nextPutAll: ''; nextPutAll: (self encode: info author); nextPutAll: ''; nextPut: Character lf.
jan@65: aStream tab; tab; nextPutAll: ''; nextPutAll: (self encode: (self convert: info message)); nextPutAll: ''; nextPut: Character lf.
jan@65: "aStream tab; tab; nextPutAll: ''; nextPut: Character lf.
jan@65: (self changesFor: aResolvedVersion)
jan@65: do: [ :each | self generateChange: each on: aStream ].
jan@65: aStream tab; tab; nextPutAll: ''; nextPut: Character lf."
jan@65: aStream tab; nextPutAll: ''; nextPut: Character lf
jan@65: !
jan@65:
jan@65: generateOn: aStream
jan@65: aStream nextPutAll: ''; nextPut: Character lf.
jan@65: aStream nextPutAll: ''; nextPut: Character lf.
jan@65: self resolved
jan@65: do: [ :each | self generateChangeSet: each on: aStream ].
jan@65: aStream nextPutAll: ''
jan@65: ! !
jan@65:
jan@65: !ChangeReport methodsFor:'initialization'!
jan@65:
jan@65: initializeOn: aCollection
jan@65: gofer := Gofer new.
jan@65: aCollection do: [ :each | gofer package: each ]
jan@65: ! !
jan@65:
jan@65: !ChangeReport methodsFor:'running'!
jan@65:
jan@65: run
sv@273: | stream |
sv@273: stream := (Filename defaultDirectory directory / 'changelog.xml') writeStream.
sv@273: [ self generateOn: stream ]
sv@273: ensure: [ stream close ]
jan@65: ! !
jan@65:
jan@65: !ChangeReport class methodsFor:'documentation'!
jan@65:
jan@65: version
jan@65: ^ '$Header$'
jan@65: !
jan@65:
jan@65: version_CVS
jan@65: ^ '$Header$'
jan@65: !
jan@65:
jan@65: version_SVN
sv@273: ^ '$Id$'
jan@65: ! !
sv@273: