diff options
-rw-r--r-- | mumi/debbugs.scm | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mumi/debbugs.scm b/mumi/debbugs.scm index 584665d..086e89a 100644 --- a/mumi/debbugs.scm +++ b/mumi/debbugs.scm @@ -17,13 +17,16 @@ (define-module (mumi debbugs) #:use-module (mumi config) + #:use-module (debbugs cache) #:use-module (email email) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) + #:use-module (srfi srfi-19) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:export (read-emails-from-bug-log extract-bug-numbers + forgotten-bug-numbers bug-id->log-file)) (define* (read-emails-from-bug-log port @@ -146,6 +149,32 @@ of archived issues." (second (string-split line #\space))) #:archived? archived?)) +(define* (forgotten-bug-numbers packages #:key (seconds-ago (* 60 60 24 30))) + "Return the numbers of issues that are open but haven't seen any +activity for a while. The duration is given by SECONDS-AGO, which +defaults to 30 days." + (define threshold + (number->string + (time-second + (subtract-duration (current-time) + (make-time time-duration 0 seconds-ago))))) + (define cache-key + (list 'forgotten-bug-numbers packages seconds-ago)) + (define cached (cached? cache-key)) + (or cached + (let ((result + (filter-index (lambda (line) + (any (lambda (package) + (and (string-prefix? package line) + (let ((fields (string-split line #\space))) + (and (string=? "open" (fourth fields)) + (string< (third fields) threshold))))) + packages)) + (lambda (line) + (second (string-split line #\space)))))) + (cache! cache-key result) + result))) + (define* (bug-id->log-file bug-id #:key archived?) (format #f "~a/spool/~a/~a/~a.log" (%config 'data-dir) |