aboutsummaryrefslogtreecommitdiffstats
path: root/notmuch
diff options
context:
space:
mode:
authorGravatar Tom Willemse2022-07-01 23:19:21 -0700
committerGravatar Tom Willemse2022-09-22 23:52:01 -0700
commit02a48a7c8ab05ab9444c116d6b0b263e06a866f2 (patch)
treea4cd11329ae12f39ac1901843e062faefc6b2dbe /notmuch
parent99baf86da71f75589feaa6957c7dac6bb9d0848c (diff)
downloadnew-dotfiles-02a48a7c8ab05ab9444c116d6b0b263e06a866f2.tar.gz
new-dotfiles-02a48a7c8ab05ab9444c116d6b0b263e06a866f2.zip
[notmuch] Automatically create tasks in org-mode for Fido emails
Diffstat (limited to 'notmuch')
-rwxr-xr-xnotmuch/.config/notmuch/default/hooks/post-new8
-rwxr-xr-xnotmuch/usr/bin/notmuch-collect-tasks42
2 files changed, 50 insertions, 0 deletions
diff --git a/notmuch/.config/notmuch/default/hooks/post-new b/notmuch/.config/notmuch/default/hooks/post-new
new file mode 100755
index 0000000..28ba263
--- /dev/null
+++ b/notmuch/.config/notmuch/default/hooks/post-new
@@ -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")))))
diff --git a/notmuch/usr/bin/notmuch-collect-tasks b/notmuch/usr/bin/notmuch-collect-tasks
new file mode 100755
index 0000000..4eff658
--- /dev/null
+++ b/notmuch/usr/bin/notmuch-collect-tasks
@@ -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"))))