From 85c5d01dcd09058094a8a180c38751e88416b1f4 Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Wed, 6 Oct 2021 22:51:30 -0400 Subject: [PATCH] mw -r to reorder account numbers --- README.md | 1 + bin/mw | 24 +++++++++++++++++++++++- mw.1 | 3 +++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a19170b..372aa02 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ The mutt-wizard runs via the command `mw`. Once setup is complete, you'll use - `mw -D your@email.com` -- delete account settings without confirmation - `mw -t 30` -- toggle automatic mailsync to every 30 minutes - `mw -T` -- toggle mailsync without specifying minutes (default is 10) +- `mw -r` -- reorder account shortcut numbers - `pass edit mw-your@email.com` -- revise an account's password ### Options usable when adding an account diff --git a/bin/mw b/bin/mw index d39b0a6..5205a13 100755 --- a/bin/mw +++ b/bin/mw @@ -285,6 +285,7 @@ Main actions: -Y Sync mail for all accounts -t number Toggle automatic mailsync every minutes -T Toggle automatic mailsync + -r Reorder account numbers Options allowed with -a: -u Account login name if not full address @@ -307,8 +308,28 @@ To change an account's password, run \`pass edit your@email.com\`. EOF } -while getopts "fpPXlhodTYD:y:i:I:s:S:u:a:n:x:m:t:" o; do case "${o}" in +reorder(){ + tempfile="$(mktemp -u)" + trap 'rm -f $tempfile' HUP INT QUIT TERM PWR EXIT + echo "# Carefully reorder these accounts with the desired numbers." > "$tempfile" + sed -n " + / i[0-9] / s?\(.* i\|' "$tempfile" + ${EDITOR:-vim} "$tempfile" || exit 1 + default="$(sort -n "$tempfile" | head -n 1)" + default="${default#* }" + sed -ibu "/.* i[0-9] .*.muttrc/d" "$muttrc" 2>/dev/null; rm -f "$muttrc"bu + awk -v a="$accdir" -v d="$default" ' BEGIN { print "source "a"/"d".muttrc" } + { + print "macro index,pager i"$1" '\''source "a"/"$2".muttrc!;'\'' \"switch to "$2"\"" + } + ' "$tempfile" >> "$muttrc" + +} + +while getopts "rfpPXlhodTYD:y:i:I:s:S:u:a:n:x:m:t:" o; do case "${o}" in l) setact list || exit 1 ;; + r) setact reorder || exit 1 ;; d) setact delete || exit 1 ;; D) setact delete || exit 1 ; fulladdr="$OPTARG" ;; y) setact sync || exit 1 ; fulladdr="$OPTARG" ;; @@ -347,5 +368,6 @@ case "$action" in delete) delete ;; sync) mailsync $fulladdr ;; toggle) togglecron ;; + reorder) reorder ;; *) mwinfo; exit 1 ;; esac diff --git a/mw.1 b/mw.1 index a8c5c8e..4bdb383 100644 --- a/mw.1 +++ b/mw.1 @@ -41,6 +41,9 @@ toggle a cronjob that syncs your mail every 15 minutes (or any other number unde .TP .B -T toggle a cronjob without specifying minutes between sync +.TP +.B -r +reorder account shortcut numbers .SH OPTIONS FOR ADDING ACCOUNTS These can be specified on the command line, otherwise, you will be prompted for what is necessary. mutt-wizard knows the IMAP/SMTP server information for most email providers, so specifying them is usually redundant. .TP