diff options
Diffstat (limited to 'bin/mw')
| -rwxr-xr-x | bin/mw | 102 |
1 files changed, 57 insertions, 45 deletions
@@ -47,6 +47,15 @@ for x in "/etc/ssl/certs/ca-certificates.crt" \ [ -f "$x" ] && sslcert="$x" && break done || { echo "CA Certificate not found. Please install one or link it to /etc/ssl/certs/ca-certificates.crt" && exit 1; } +basicdir() { + mailboxes="$(printf "Archive\\nINBOX\\nDrafts\\nSent\\nJunk\\nTrash")" + maildirs="$(echo "$mailboxes" | sed "s/^/{/;s/$/}/" | paste -sd ',' -)" + contents="mailboxes $(echo "$mailboxes" | sed "s/^/\"=/;s/$/\"/;s/'/\\\'/g" | paste -sd ' ' -)" + for file in "$accdir/"*.muttrc; do + [ -f "$file" ] && grep -q "mailboxes" "$file" && sed -i "s/mailboxes.*/$contents/g" "$file" 2>/dev/null && mkdir -p "$maildir/${file##*/}/$maildirs" + done +} + checkbasics() { command -V gpg >/dev/null 2>&1 && GPG="gpg" || GPG="gpg2" PASSWORD_STORE_DIR="${PASSWORD_STORE_DIR:-$HOME/.password-store}" @@ -206,7 +215,7 @@ done; } getboxes() { if [ -n "${force+x}" ]; then - mailboxes="$(printf "INBOX\\nDrafts\\nJunk\\nTrash\\nSent\\nArchive")" + mailboxes="$(printf "Archive\\nINBOX\\nDrafts\\nSent\\nJunk\\nTrash")" else info="$(curl --location-trusted -s -m 5 --user "$login:$(pass "$passprefix$fulladdr")" --url "${protocol:-imaps}://$imap:${iport:-993}")" [ -z "$info" ] && errorexit @@ -268,6 +277,7 @@ including downloadable mail with \`isync\`. Main actions: -a your@email.com Add an email address + -c create basic mailboxes for all accounts -l List email addresses configured -d Remove an already added address -D your@email.com Force remove account without confirmation @@ -320,23 +330,40 @@ reorder() { ' "$tempfile" >>"$muttrc" } -while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in +while getopts "cdfhloprTXYa:D:i:I:m:n:P:s:S:t:u:x:y:" o; do case "${o}" in + c) setact craete ;; + d) setact delete ;; + f) + setact add + force=True + ;; + h) setact info ;; l) setact list ;; + o) + setact add + type="online" + ;; + p) + setact add + type="pop" + protocol="pop3s" + iport="${iport:-995}" + ;; r) setact reorder ;; - d) setact delete ;; - D) + T) setact toggle ;; + X) setact delete - fulladdr="$OPTARG" - ;; - y) - setact sync - fulladdr="$OPTARG" + purge=True ;; Y) setact sync ;; a) setact add fulladdr="$OPTARG" ;; + D) + setact delete + fulladdr="$OPTARG" + ;; i) setact add imap="$OPTARG" @@ -345,17 +372,9 @@ while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in setact add iport="$OPTARG" ;; - s) - setact add - smtp="$OPTARG" - ;; - S) - setact add - sport="$OPTARG" - ;; - u) + m) setact add - login="$OPTARG" + maxmes="$OPTARG" ;; n) setact add @@ -365,38 +384,30 @@ while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in setact add passprefix="$OPTARG" ;; - m) + s) setact add - maxmes="$OPTARG" + smtp="$OPTARG" ;; - o) + S) setact add - type="online" + sport="$OPTARG" ;; - p) + u) setact add - type="pop" - protocol="pop3s" - iport="${iport:-995}" + login="$OPTARG" ;; - f) - setact add - force=True + t) + setact toggle + cronmin="$OPTARG" ;; x) setact add password="$OPTARG" ;; - X) - setact delete - purge=True - ;; - t) - setact toggle - cronmin="$OPTARG" + y) + setact sync + fulladdr="$OPTARG" ;; - T) setact toggle ;; - h) setact info ;; \?) echo "See \`$(basename $0) -h\` for possible options and help." exit 1 @@ -406,17 +417,18 @@ while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in [ -z "$action" ] && action="info" case "$action" in -list) list ;; add) checkbasics && askinfo && getboxes && getprofiles && finalize ;; +create) basicdir ;; delete) delete ;; +info) + mwinfo + exit 1 + ;; +list) list ;; +reorder) reorder ;; sync) echo "\`mw -y\` and \`mw -Y\` are now deprecated and will be removed in a future update. Please switch to using \`mailsync\`." mailsync $fulladdr ;; toggle) togglecron ;; -reorder) reorder ;; -info) - mwinfo - exit 1 - ;; esac |
