Recently Written · git

prompt-mail

Ask mail-related questions and filter mail-related files with dmenu

git clone https://github.com/equwal/prompt-mail

Log | Files | Refs


commit d5a37b7088f8bdcaf109768a2fd02c677a579a6f
Spenser Truex <truex@equwal.com>
2020-09-23 21:04:04 -0700

Use PROMPT variable instead of hardcoded.

 README             | 14 ++++++--------
 example/mail-alias | 17 +++++++++++++++++
 example/mail-xclip |  2 +-
 prompt-mail        |  8 ++++----
 4 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/README b/README
index 467d43a..72fd276 100644
--- a/README
+++ b/README
@@ -1,19 +1,17 @@
-Prompt for email
+Prompt for email address using alias files.
 
-Requires:
-- dmenu
-- mail alias files
+Requires dmenu or another PROMPT.
 
 Installation
 ------------
-$ make config
-$ sudo make install
+$ make config && sudo make install
 # Edit config to point at your mail aliases file
 $ microsoft-word-97 ${CFG_PATH}/prompt-mail.conf
 
 
 Mail alias files are generated by mail programs like mutt. The format is:
 
-alias shorthand Some Person <someperson@example.com> # optional comment
+alias shorthand Short Person <shortperson@wienerdog.com> # optional comment
+alias longpaw Long Cat <longperson@longcat.com> # optional comment
 
-one alias per line
+one alias per line.
diff --git a/example/mail-alias b/example/mail-alias
new file mode 100755
index 0000000..d6b2b0d
--- /dev/null
+++ b/example/mail-alias
@@ -0,0 +1,17 @@
+#!/bin/sh
+CONFIG=~/.config/neomutt/aliases
+add_email () {
+    out=$(sed -ne 's/^From:[ \t]*//p' /dev/stdin)
+    # Ensure adding aliases is idempotent with respect to mail address.
+    grep -q -F -- $(echo "$out" | sed 's/^.*<// ; s/>.*$>//') ${CONFIG}
+    active=$?
+    [ $active != 0 ] && y-or-n "Add $out? " && echo "alias $(dmenu -p 'Alias shorthand? ') $out" >> ${CONFIG}
+}
+query () {
+cat ~/.config/prompt-mail.conf \
+    | sed 's/^#.*$//' \
+    | xargs sed -E 's/^alias // ; s/#.*$//' \
+    | grep "$1"
+}
+[ "$1" == "--add-email" ] &&  add_email </dev/stdin
+[ "$1" == "--query" ] && query "$2"
diff --git a/example/mail-xclip b/example/mail-xclip
index 345bbc9..b07e320 100755
--- a/example/mail-xclip
+++ b/example/mail-xclip
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-prompt-email | tr -d "\n" | xclip -i -selection clipboard
+prompt-mail | tr -d "\n" | xclip -i -selection clipboard
diff --git a/prompt-mail b/prompt-mail
index 38d94bf..7563f75 100755
--- a/prompt-mail
+++ b/prompt-mail
@@ -1,9 +1,11 @@
 #!/bin/sh
+# edit this if you want a different prompter.
+PROMPT="dmenu -i -p"
 
 verify_email () {
     IN=$(cat /dev/stdin)
     echo "$IN" | grep -q '@' && echo "$IN" && return 0
-    echo "$IN Not an email." > 2 ; return 1
+    echo "$IN Not an email." >/dev/stderr ; return 1
 }
 
 mail_addrs () {
@@ -13,7 +15,5 @@ mail_addrs () {
 }
 
 mail_addrs \
-    | dmenu -i -p "mail address:" \
+    | $PROMPT 'mail address:' \
     | verify_email
-
-