diff options
-rw-r--r-- | mumi/debbugs.scm | 22 |
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) |