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} 'source #{config['neomutt_profiles_directory']}/#{account['name']}.neomuttrc!'" 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