summaryrefslogtreecommitdiff
path: root/gentoobrowse/console/changelogs.xml
blob: 6622a1c15e57220fb4dfe86be786b6d578811a27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?xml version="1.0"?>
<packageimport name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude"
		xmlns:project2="http://project2.randomdan.homeip.net">
	<project2:sqlrows name="updatedlogs" datasource="postgres">
		<sql>
			SELECT f.filename, ft.searchroot || f.filename AS path, p.packageid
			FROM files f, filetypes ft, packages p, categories c
			WHERE f.filetypeid = ft.filetypeid
			AND (f.cachedat IS NULL OR f.cachedat != f.moddate)
			AND ft.filetypeid = 2
			AND p.name = SPLIT_PART(filename, '/', 2)
			AND c.name = SPLIT_PART(filename, '/', 1)
			AND c.categoryid = p.categoryid
		</sql>
	</project2:sqlrows>
	<project2:streamrows name="logcontent" encoding="utf-8" newline="" fieldSep="" quoteChar="">
		<project2:filestream>
			<path source="parent" name="path" depth="1" />
		</project2:filestream>
		<columns>
			<text />
		</columns>
	</project2:streamrows>
	<project2:regexrows name="logentries">
		<sourceText source="parent" name="text" depth="1" />
		<regex>(\d+ *(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\w* \d+); *([^&lt;]+)? *&lt;([^ &gt;]+)[&gt;\s]\s*(?:[^:]*:)?\s*(.*?)(?:\R\*|\s*$|\R\R)</regex>
		<columns>
			<date />
			<person />
			<email />
			<comment />
		</columns>
	</project2:regexrows>
	<project2:sqlmerge name="changelogs" datasource="postgres" targettable="package_changelogs">
		<updatewhere>
			a.packageid IN (
					SELECT p.packageid
					FROM files f, packages p, categories c
					WHERE f.filetypeid = 2
					AND (f.cachedat IS NULL OR f.cachedat != f.moddate)
					AND p.name = SPLIT_PART(filename, '/', 2)
					AND c.name = SPLIT_PART(filename, '/', 1)
					AND c.categoryid = p.categoryid)
		</updatewhere>
		<project2:iterate name="seelogs" source="updatedlogs">
			<project2:iterate name="seelog" source="logcontent">
				<project2:iterate name="seeentries" source="logentries">
					<project2:if>
						<project2:all>
							<project2:validdatetest format="%d %b %Y">
								<apply-to source="parent" name="date" depth="1" warn="no" />
							</project2:validdatetest>
							<project2:regextest regex=".+@.+">
								<apply-to source="parent" name="email" depth="1" />
							</project2:regextest>
						</project2:all>
						<project2:sqlmergeinsert>
							<parameters>
								<packageid source="parent" name="packageid" depth="3" />
								<date source="parent" name="date" depth="1" />
								<n source="parent" attribute="rownum" depth="1" />
								<person source="parent" name="person" depth="1" />
								<email source="parent" name="email" depth="1" />
								<comment source="parent" name="comment" depth="1" />
							</parameters>
						</project2:sqlmergeinsert>
					</project2:if>
				</project2:iterate>
			</project2:iterate>
		</project2:iterate>
		<columns>
			<packageid key="true" />
			<date key="true" />
			<n key="true" />
			<person />
			<email />
			<comment />
		</columns>
	</project2:sqlmerge>
	<project2:sqltask name="update" datasource="postgres">
		<sql>
			UPDATE files SET
				cachedat = moddate
			WHERE filetypeid = 2
		</sql>
	</project2:sqltask>
</packageimport>