diff options
Diffstat (limited to 'mutt.rb')
-rw-r--r-- | mutt.rb | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -0,0 +1,77 @@ +def make_named_mailboxes account + mailboxes = account['mailboxes'].filter do |mailbox| + mailbox['alias'] + end + + if !mailboxes.empty? + string = mailboxes.map do |mailbox| + "#{mailbox['alias']} \"+#{mailbox['name']}\"" + end.join ' ' + + "named-mailboxes #{string}" + end +end + +def make_unnamed_mailboxes account + mailboxes = account['mailboxes'].filter do |mailbox| + !mailbox['alias'] + end + + if !mailboxes.empty? + string = mailboxes.map do |mailbox| + "\"+#{mailbox}\"" + end.join ' ' + + "mailboxes #{string}" + end +end + +def make_mutt_config account, config + named_mailboxes = make_named_mailboxes account + unnamed_mailboxes = make_unnamed_mailboxes account + mailboxes = "#{named_mailboxes}" + if !named_mailboxes + mailboxes = '' + elsif unnamed_mailboxes + mailboxes += "\n" + end + mailboxes += unnamed_mailboxes || '' + + <<~END.chomp + # File generated by mmm + set realname="#{account['real_name'] || config['real_name']}" + set from=#{account['email']} + set sendmail="msmtp -a #{account['name']}" + set folder=#{config['mail_directory']}/#{account['name']} + set spoolfile=+INBOX + set record="+#{account['record'] || 'Sent'}" + set postponed="+#{account['postponed'] || 'Drafts'}" + set header_cache="~/.cache/mmm/#{account['name']}/headers" + unmailboxes * + #{mailboxes} + END +end + +def make_mutt_activator account, i, config + "macro index i#{i} '<sync-mailbox><enter-command>source #{config['neomutt_profiles_directory']}/#{account['name']}.neomuttrc<enter><change-folder>!<enter>'" +end + +def make_mutt_configs config + configs = {} + config['accounts'].each do |account| + configs[account['name']] = make_mutt_config(account, config) + end + configs +end + +def make_mmm_muttrc config + activators = config['accounts'].each_with_index.map do |account, i| + make_mutt_activator account, i + 1, config + end.join "\n" + + <<~END + # File generated by mmm + bind index i noop + #{activators} + END +end |