blob: db39fae9e87d950158e1784c1618730d957939fb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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;
|