diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2020-04-07 14:23:08 +0200 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2020-04-07 14:23:08 +0200 |
commit | 4058f6e7027c3c0e8471badd6acf917999363702 (patch) | |
tree | 3dafc27f3b0149d4a3c28c4269d754320d819549 | |
parent | e89f2e430715a0e19f1ea9d3d988a707def6388f (diff) |
messages: Add update-mboxes!.
-rw-r--r-- | mumi/messages.scm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/mumi/messages.scm b/mumi/messages.scm index a93bd2b..58a3335 100644 --- a/mumi/messages.scm +++ b/mumi/messages.scm @@ -25,6 +25,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 textual-ports) #:use-module (ice-9 binary-ports) + #:use-module (ice-9 threads) #:use-module (debbugs cache) #:use-module (debbugs soap) #:use-module (debbugs operations) @@ -41,6 +42,7 @@ wishlist-bugs bugs-by-severity + update-mboxes! multipart-message? extract-attachment)) @@ -219,6 +221,28 @@ the difference by providing the current file size as an offset." file-name) #f))))) +(define (update-mboxes! bug-nums) + (par-for-each (lambda (bug-num i) + (format (current-error-port) + "[~a/~a] Refreshing mbox of bug ~a...~%" + i (length bug-nums) bug-num) + (force-output (current-error-port)) + (parameterize ((current-error-port (%make-void-port OPEN_WRITE))) + (and=> (download-mbox bug-num) + (lambda (mbox) + ;; Split into several files for indexing with mumimu + (let ((mails + (call-with-input-file mbox mbox->emails))) + (map (lambda (mail index) + (with-output-to-file + (format #f "~a/cur/~a.~a" + (%config 'mail-dir) bug-num index) + (lambda () + (put-bytevector (current-output-port) mail)))) + mails + (iota (length mails) 1))))))) + bug-nums + (iota (length bug-nums) 1))) ;; We would like to use get-bug-log here, but it often returns ;; truncated messages. This is a known bug upstream. |