[notmuch] Automatically create tasks in org-mode for Fido emails
This commit is contained in:
parent
99baf86da7
commit
02a48a7c8a
2 changed files with 50 additions and 0 deletions
8
notmuch/.config/notmuch/default/hooks/post-new
Executable file
8
notmuch/.config/notmuch/default/hooks/post-new
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env sh
|
||||
# -*- mode: scheme; -*-
|
||||
IFS=" "
|
||||
exec scsh -e main -s "$0" "$@"
|
||||
!#
|
||||
|
||||
(define (main . args)
|
||||
(run (notmuch-collect-tasks ,(format #f "~a/documents/gtd/inbox.org" (getenv "HOME")))))
|
42
notmuch/usr/bin/notmuch-collect-tasks
Executable file
42
notmuch/usr/bin/notmuch-collect-tasks
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/env sh
|
||||
# -*- mode: scheme; -*-
|
||||
IFS=" "
|
||||
exec scsh -e main -s "$0" "$@"
|
||||
!#
|
||||
|
||||
(define message-query
|
||||
'(from:fidobill@fidomobile.ca
|
||||
and "subject:Your Fido bill is ready"))
|
||||
|
||||
(define processed-tag-name "processed")
|
||||
|
||||
(define (message->task message)
|
||||
(let ((query (caadr (member ':query message)))
|
||||
(subject (cadr (member ':subject message)))
|
||||
(date (format-date "~Y-~m-~d ~a ~H:~M" (date))))
|
||||
(format #f "* TODO ~a
|
||||
:PROPERTIES:
|
||||
:CREATED: [~a]
|
||||
:END:
|
||||
|
||||
[[notmuch:~a][~a]]" subject date query subject)))
|
||||
|
||||
(define (print-task task)
|
||||
(format #t "~a~%~%" task))
|
||||
|
||||
(define (main args)
|
||||
(let ((output-file (cadr args))
|
||||
(messages (run/sexp
|
||||
(notmuch search --format=sexp
|
||||
,@message-query
|
||||
and not ,(format #f "tag:~a" processed-tag-name)))))
|
||||
(with-current-output-port
|
||||
(open-output-file output-file (file-options create append))
|
||||
(for-each (lambda (message)
|
||||
(print-task (message->task message)))
|
||||
messages))
|
||||
(run (notmuch tag ,(format #f "+~a" processed-tag-name) ,@message-query)
|
||||
(> /dev/null))
|
||||
(format #t "Created ~a task~a~%"
|
||||
(length messages)
|
||||
(if (= 1 (length messages)) "" "s"))))
|
Loading…
Reference in a new issue