Coverage report: /home/ellis/comp/core/lib/cli/tools/mail.lisp
Kind | Covered | All | % |
expression | 0 | 101 | 0.0 |
branch | 0 | 4 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; mail.lisp --- CLI Mail Tools
6
(in-package :cli/tools/mail)
8
(deferror mail-error (simple-error) () (:auto t))
10
(defvar *notmuch* (find-exe "notmuch"))
11
(defvar *offlineimap* (find-exe "offlineimap"))
12
(defvar *mail-program* :emacs)
14
(defun %notmuch (args output &optional (wait t))
15
(sb-ext:run-program *notmuch* (or (flatten args) nil) :output output :wait wait))
17
(defun run-notmuch* (args &optional (output *standard-output*))
18
(let ((proc (%notmuch args output)))
19
(if (eq 0 (sb-ext:process-exit-code proc))
21
(mail-error "NOTMUCH command failed: ~A ~A" *notmuch* (or args "")))))
23
(defun run-notmuch (&rest args)
26
(defun run-offlineimap* (args &optional (output *standard-output*) wait)
27
(let ((proc (sb-ext:run-program *offlineimap* (or (flatten args) nil) :output output :wait wait)))
29
(if (eq 0 (sb-ext:process-exit-code proc))
31
(mail-error "OFFLINEIMAP command failed: ~A ~A" *offlineimap* (or args ""))))))
33
(defun run-offlineimap (&optional wait args)
34
(run-offlineimap* args *standard-output* wait))
36
(defun notmuch-search (query)
37
(let* ((proc (%notmuch `("search" "--format=sexp" ,query) :stream nil))
38
(out (sb-ext:process-output proc)))
41
(defun notmuch-show (query)
42
(let* ((proc (%notmuch `("show" "--format=sexp" ,query) :stream nil))
43
(out (sb-ext:process-output proc)))
46
(defun notmuch-count (query)
47
(let* ((proc (%notmuch `("count" ,query) :stream nil))
48
(out (sb-ext:process-output proc)))
51
(defun notmuch-tag (query &rest args)
52
(apply 'run-notmuch "tag" (push query args)))
54
(defun notmuch-address (query &rest args)
55
(let* ((proc (%notmuch `("address" "--format=sexp" ,@args ,query) :stream nil))
56
(out (sb-ext:process-output proc)))