m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/mmm.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mmm.rb')
-rw-r--r--mmm.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/mmm.rb b/mmm.rb
new file mode 100644
index 0000000..cb22517
--- /dev/null
+++ b/mmm.rb
@@ -0,0 +1,49 @@
+require 'yaml'
+require 'optparse'
+
+require './mbsync'
+require './mutt'
+require './msmtp'
+
+options = {
+ config: '~/.config/mmm/config.yaml',
+ write: false
+}
+
+OptionParser.new do |opts|
+ opts.on '-w', '--write', 'Write configs to disk. Otherwise, just outputs to stdout.'
+ opts.on '-cCONFIG', '--config CONFIG', 'Specify configuration file, defaults to ~/.config/mmm/config.'
+end.parse!(into: options)
+
+config = YAML.load File.read(File.expand_path options[:config])
+
+def write_mbsync_config config, options
+ mbsync_config = make_mbsync_config config
+ (options[:write] ? File.open(File.expand_path(config['mbsyncrc']), 'w') : $stdout).puts mbsync_config
+end
+
+def write_msmtp_config config, options
+ preamble = msmtprc_preamble
+ io = (options[:write] ? File.open(File.expand_path(config['msmtprc']), 'w') : $stdout)
+ io.puts preamble
+ io.puts
+ msmtp_config = make_msmtp_config config
+ io.puts msmtp_config
+end
+
+def write_mutt_configs config, options
+ mutt_configs = make_mutt_configs config
+ profiles_directory = File.expand_path(config['neomutt_profiles_directory'])
+ mutt_configs.each do |account, account_config|
+ path = File.join(profiles_directory, "#{account}.neomuttrc")
+ (options[:write] ? File.open(path, 'w') : $stdout).puts account_config
+ end
+
+ mmmrc = make_mmm_muttrc config
+ mmmrc_path = File.join(File.expand_path(config['neomutt_config_dir']), "mmm.neomuttrc")
+ (options[:write] ? File.open(mmmrc_path, 'w') : $stdout).puts mmmrc
+end
+
+write_mbsync_config config, options
+write_msmtp_config config, options
+write_mutt_configs config, options