|
32 | 32 | "(hexstreamsoft)" |
33 | 33 | "(marijnh)averbeke" |
34 | 34 | "(maraist)" |
| 35 | + "(hu\\.dwim)" |
35 | 36 | "(lichteblau)" |
36 | 37 | "gitlab.common-lisp.net/(.*?)/")) |
37 | 38 |
|
|
44 | 45 | (when (and start (plusp (length starts))) |
45 | 46 | (subseq target (aref starts 0) (aref ends 0))))) |
46 | 47 |
|
47 | | -(defun group-name (failing-source) |
48 | | - (let ((location (location (source failing-source)))) |
| 48 | +(defun group-name (source) |
| 49 | + (let ((location (location source))) |
49 | 50 | (dolist (pattern *location-grouping-patterns*) |
50 | 51 | (let ((group (scan-first-register pattern location))) |
51 | 52 | (when group |
|
87 | 88 | (format nil "http://report.quicklisp.org/rss/~A.rss" group)) |
88 | 89 |
|
89 | 90 | (defun generate-feeds (failure-report) |
| 91 | + "Return a hash-table of feeds, keyed by feed group name. Special key |
| 92 | +'all' has all feeds." |
90 | 93 | (let ((feeds (make-string-table))) |
91 | 94 | (labels ((ensure-feed (title link) |
92 | 95 | (let ((feed (gethash title feeds))) |
|
100 | 103 | :description |
101 | 104 | (format nil "Quicklisp build failures for ~S" |
102 | 105 | title))))))) |
| 106 | + ;; Generate empty feeds for all sources |
| 107 | + (map-sources |
| 108 | + (lambda (source) |
| 109 | + (let ((group-name (group-name source))) |
| 110 | + (when group-name |
| 111 | + (ensure-feed group-name (feed-link group-name)))))) |
| 112 | + ;; Populate failing sources |
103 | 113 | (let ((all (ensure-feed "all" (feed-link "all")))) |
104 | 114 | (dolist (source (failure-data failure-report) feeds) |
105 | 115 | (let* ((item (failing-source-item source)) |
106 | | - (group-name (group-name source))) |
| 116 | + (group-name (group-name (source source)))) |
107 | 117 | (push item (items all)) |
108 | 118 | (when group-name |
109 | 119 | (push item (items (ensure-feed group-name (feed-link group-name))))))))))) |
|
0 commit comments