From c8123c155b237e6717a500923376918bb0a4c38a Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Mon, 9 Mar 2020 12:48:12 +0100 Subject: Add Mutt configuration --- .local/lib/perl5/App/Localmail.pm | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .local/lib/perl5/App/Localmail.pm (limited to '.local/lib/perl5/App/Localmail.pm') diff --git a/.local/lib/perl5/App/Localmail.pm b/.local/lib/perl5/App/Localmail.pm new file mode 100644 index 0000000..db39fae --- /dev/null +++ b/.local/lib/perl5/App/Localmail.pm @@ -0,0 +1,54 @@ +#!/usr/bin/env false + +use v5.20; +use feature qw/say signatures/; +use strict; +use utf8; +use warnings; + +use YAML::XS; +use File::Basename; +use File::Slurp; + +package App::Localmail; + +sub base_config () { + my $config_dir = "$ENV{HOME}/.config/localmail"; + my $config = {}; + + # Load main configuration + $config->{localmail} = YAML::XS::Load(File::Slurp::read_file("$config_dir/config.yaml")); + + # Load account configurations + for (glob("$config_dir/accounts/*.yaml")) { + my ($name, $path, $suffix) = File::Basename::fileparse($_, ('.yaml')); + my $yaml = File::Slurp::read_file($_); + + $config->{accounts}->{$name} = YAML::XS::Load($yaml); + } + + $config->{localmail}{maildir} //= "$ENV{HOME}/.maildir"; + + $config; +} + +sub config_passwords ($config) { + # Get passwords where necessary + for (keys %{$config->{accounts}}) { + if (!defined($config->{accounts}{$_}{incoming}{password}{plain})) { + my $file = $config->{accounts}{$_}{incoming}{password}{file}; + chomp (my $password = qx/gpg -d "$file" | head -n 1/); + + $config->{accounts}{$_}{incoming}{password}{plain} = $password; + } + + if (!defined($config->{accounts}{$_}{outgoing}{password}{plain})) { + my $file = $config->{accounts}{$_}{outgoing}{password}{file}; + chomp (my $password = qx/gpg -d "$file" | head -n 1/); + + $config->{accounts}{$_}{outgoing}{password}{plain} = $password; + } + } +} + +1; -- cgit v1.1