summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/mw102
1 files changed, 57 insertions, 45 deletions
diff --git a/bin/mw b/bin/mw
index b7b9103..dfbacdd 100755
--- a/bin/mw
+++ b/bin/mw
@@ -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