m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/mutt.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mutt.rb')
-rw-r--r--mutt.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/mutt.rb b/mutt.rb
new file mode 100644
index 0000000..7b650b9
--- /dev/null
+++ b/mutt.rb
@@ -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