summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2020-05-10 11:16:51 +0200
committerRicardo Wurmus <rekado@elephly.net>2020-05-10 11:22:16 +0200
commit3c07337a1f7d2091ce22abca99abb5eef3cb5a5a (patch)
tree427373ca30453476986356a7ac729d7fb9e61cc6
parent66e024d07d67ef4ed1bad72ea03011e6c66427d5 (diff)
debbugs: Add forgotten-bug-numbers.
-rw-r--r--mumi/debbugs.scm29
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)