#!/bin/bash # Description: Email syncing tools plus the mu4e client set -e __MAXMESSAGES=100 function __certificatefile { for path in \ /usr/local/etc/ssl \ /usr/local/etc/openssl \ /usr/local/etc/openssl@1.1 \ /etc/ssl \ /etc/openssl \ ; do for certfile in \ cert.pem \ certs/ca-certificates.crt \ ; do if test -f "${path}/${certfile}"; then echo "${path}/${certfile}" return fi done done } function __mbsync_config { cat > ${HOME}/.mbsyncrc <<EOF IMAPAccount personal Host imap.gmail.com User correl@gmail.com PassCmd "pass accounts.google.com/correl@gmail.com | grep ^isync: | awk '{print \$2}'" AuthMechs LOGIN SSLType IMAPS SSLVersions TLSv1.2 CertificateFile $(__certificatefile) IMAPStore personal-remote Account personal MaildirStore personal-local Subfolders Verbatim Path ~/Mail/Personal/ Inbox ~/Mail/Personal/INBOX Channel personal Far :personal-remote: Near :personal-local: MaxMessages ${__MAXMESSAGES} ExpireUnread yes Patterns "INBOX" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash" Create Both Expunge Both SyncState * IMAPAccount work Host imap.gmail.com User correlr@aweber.com PassCmd "pass Work/aweber/accounts.google.com/correlr@aweber.com | grep ^isync: | awk '{print \$2}'" AuthMechs LOGIN SSLType IMAPS SSLVersions TLSv1.2 CertificateFile $(__certificatefile) IMAPStore work-remote Account work MaildirStore work-local Subfolders Verbatim Path ~/Mail/Work/ Inbox ~/Mail/Work/INBOX Channel work Far :work-remote: Near :work-local: MaxMessages ${__MAXMESSAGES} ExpireUnread yes Patterns "INBOX" "AWeber Times" "Jira" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash" Create Both Expunge Both SyncState * EOF } _recipe emacs case $_PLATFORM in darwin) _recipe brew _brew isync EMACS=$(which emacs) _brew mu --HEAD ;; arch) _recipe _arch _pacman isync _yay mu ;; debian) _recipe _apt for dep in \ build-essential \ autoconf \ automake \ libtool \ texinfo \ libgmime-3.0-dev \ libxapian-dev \ guile-2.0-dev \ html2text \ xdg-utils \ libwebkitgtk-dev \ isync do _apt $dep done dir=`mktemp -d` && \ pushd $dir >/dev/null if ! command -v mu >/dev/null; then echo "[tgz] Fetching mu" curl -sL https://github.com/djcb/mu/archive/master.tar.gz \ | tar xz --strip 1 && \ echo "[tgz] Configuring mu" && \ ./autogen.sh >/dev/null 2>&1 && \ ./configure --prefix=/usr >/dev/null 2>&1 && \ echo "[tgz] Building mu" && \ make >/dev/null 2>&1 && \ echo "[tgz] Installing mu" && \ sudo make install >/dev/null 2>&1 popd >/dev/null rm -rf "$dir" fi ;; esac _run "[email] Creating mail directories" mkdir -p ${HOME}/Mail/{Personal,Work,.attachments} _run "[email] Configuring mbsync" __mbsync_config _run "[email] Initializing mail database" mu init -m ${HOME}/Mail \ --my-address=correl@gmail.com \ --my-address=correlr@aweber.com \ --my-address=correlr@aweber.net _run "[email] Indexing mail" mu index _recipe nvm _npm imapnotify