|
1 "{ Package: 'stx:goodies/builder/reports' }" |
|
2 |
|
3 "{ NameSpace: Builder }" |
|
4 |
|
5 Report subclass:#ChangeReport |
|
6 instanceVariableNames:'gofer' |
|
7 classVariableNames:'' |
|
8 poolDictionaries:'' |
|
9 category:'Builder-Reports-Unfinished' |
|
10 ! |
|
11 |
|
12 |
|
13 !ChangeReport methodsFor:'accessing'! |
|
14 |
|
15 changesFor: aResolvedVersion |
|
16 | references patch | |
|
17 references := gofer allResolved |
|
18 select: [ :each | each packageName = aResolvedVersion packageName ]. |
|
19 patch := MCPatch |
|
20 fromBase: (references size > 1 |
|
21 ifTrue: [ (references at: references size - 1) version snapshot ] |
|
22 ifFalse: [ MCSnapshot empty ]) |
|
23 target: aResolvedVersion version snapshot. |
|
24 ^ patch operations asSortedCollection |
|
25 ! |
|
26 |
|
27 resolved |
|
28 ^ gofer resolved |
|
29 ! ! |
|
30 |
|
31 !ChangeReport methodsFor:'generating'! |
|
32 |
|
33 generateChange: aPatch on: aStream |
|
34 aPatch isAddition |
|
35 ifTrue: [ ^ self generateChangeAddition: aPatch on: aStream ]. |
|
36 aPatch isModification |
|
37 ifTrue: [ ^ self generateChangeModification: aPatch on: aStream ]. |
|
38 aPatch isRemoval |
|
39 ifTrue: [ ^ self generateChangeRemoval: aPatch on: aStream ] |
|
40 ! |
|
41 |
|
42 generateChangeAddition: aPatch on: aStream |
|
43 aStream tab; tab; tab; nextPutAll: '<item action="add">'; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '</item>'; nextPut: Character lf |
|
44 ! |
|
45 |
|
46 generateChangeModification: aPatch on: aStream |
|
47 aStream tab; tab; tab; nextPutAll: '<item action="change">'; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '</item>'; nextPut: Character lf |
|
48 ! |
|
49 |
|
50 generateChangeRemoval: aPatch on: aStream |
|
51 aStream tab; tab; tab; nextPutAll: '<item action="remove">'; nextPutAll: (self encode: (self convert: aPatch summary)); nextPutAll: '</item>'; nextPut: Character lf |
|
52 ! |
|
53 |
|
54 generateChangeSet: aResolvedVersion on: aStream |
|
55 | info | |
|
56 info := aResolvedVersion version info. |
|
57 aStream tab; nextPutAll: '<logentry version="'; nextPutAll: (self encode: info name); nextPutAll: '">'; nextPut: Character lf. |
|
58 aStream tab; tab; nextPutAll: '<date>'; nextPutAll: (self encode: info date yyyymmdd); space; nextPutAll: (self encode: info time print24); nextPutAll: '</date>'; nextPut: Character lf. |
|
59 aStream tab; tab; nextPutAll: '<author>'; nextPutAll: (self encode: info author); nextPutAll: '</author>'; nextPut: Character lf. |
|
60 aStream tab; tab; nextPutAll: '<msg>'; nextPutAll: (self encode: (self convert: info message)); nextPutAll: '</msg>'; nextPut: Character lf. |
|
61 "aStream tab; tab; nextPutAll: '<items>'; nextPut: Character lf. |
|
62 (self changesFor: aResolvedVersion) |
|
63 do: [ :each | self generateChange: each on: aStream ]. |
|
64 aStream tab; tab; nextPutAll: '</items>'; nextPut: Character lf." |
|
65 aStream tab; nextPutAll: '</logentry>'; nextPut: Character lf |
|
66 ! |
|
67 |
|
68 generateOn: aStream |
|
69 aStream nextPutAll: '<?xml version="1.0" encoding="UTF-8"?>'; nextPut: Character lf. |
|
70 aStream nextPutAll: '<changelog>'; nextPut: Character lf. |
|
71 self resolved |
|
72 do: [ :each | self generateChangeSet: each on: aStream ]. |
|
73 aStream nextPutAll: '<changelog>' |
|
74 ! ! |
|
75 |
|
76 !ChangeReport methodsFor:'initialization'! |
|
77 |
|
78 initializeOn: aCollection |
|
79 gofer := Gofer new. |
|
80 aCollection do: [ :each | gofer package: each ] |
|
81 ! ! |
|
82 |
|
83 !ChangeReport methodsFor:'running'! |
|
84 |
|
85 run |
|
86 | stream | |
|
87 stream := FileDirectory default containingDirectory |
|
88 forceNewFileNamed: 'changelog.xml'. |
|
89 [ self generateOn: stream ] |
|
90 ensure: [ stream close ] |
|
91 ! ! |
|
92 |
|
93 !ChangeReport class methodsFor:'documentation'! |
|
94 |
|
95 version |
|
96 ^ '$Header$' |
|
97 ! |
|
98 |
|
99 version_CVS |
|
100 ^ '$Header$' |
|
101 ! |
|
102 |
|
103 version_SVN |
|
104 ^ '§Id: Builder__ChangeReport.st 191 2011-08-06 20:59:23Z vranyj1 §' |
|
105 ! ! |