summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mumi/debbugs.scm22
1 files changed, 22 insertions, 0 deletions
diff --git a/mumi/debbugs.scm b/mumi/debbugs.scm
index c0f0c1c..d4dd4dd 100644
--- a/mumi/debbugs.scm
+++ b/mumi/debbugs.scm
@@ -23,6 +23,7 @@
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:export (read-emails-from-bug-log
+ extract-bug-numbers
bug-id->log-file))
(define* (read-emails-from-bug-log port
@@ -111,6 +112,27 @@ ends with ^C.
(loop mails lines type skip?)
(loop mails (cons line lines) type skip?))))))))
+(define* (extract-bug-numbers packages #:key archived?)
+ "Open up a Debbugs index file and return the bug numbers for those
+lines that match one of PACKAGES. If ARCHIVED? is #T search the index
+of archived issues."
+ (define index-file
+ (format #f "~a/spool/index.~a.realtime" (%config 'data-dir)
+ (if archived? "archive" "db")))
+ (define (extract-numbers port)
+ (let loop ((numbers '()))
+ (match (read-line port)
+ ((? eof-object? x) numbers)
+ (line
+ (cond
+ ((any (lambda (package)
+ (string-prefix? package line))
+ packages)
+ (loop (cons (second (string-split line #\space))
+ numbers)))
+ (else (loop numbers)))))))
+ (call-with-input-file index-file extract-numbers))
+
(define* (bug-id->log-file bug-id #:key archived?)
(format #f "~a/spool/~a/~a/~a.log"
(%config 'data-dir)