package Config::ClawsMail;
use Moo;
use Config::INI::Reader;
use Config::ClawsMail::Account;
use Types::Standard qw(HashRef InstanceOf);
use Path::Tiny;
use namespace::clean;
has accounts => (
is => 'ro',
isa => HashRef[InstanceOf['Config::ClawsMail::Account']],
default => sub { +{}; },
);
sub BUILDARGS {
my ($class,@etc) = @_;
my $args = $class->next::method(@etc);
return $args if $args->{accounts};
my $config_file = delete $args->{config_file}
|| path($ENV{HOME},'.claws-mail','accountrc');
my $config_hash = Config::INI::Reader->read_file(
$config_file,
);
for my $account_conf (values %{$config_hash}) {
my $account = Config::ClawsMail::Account->new_from_config($account_conf);
$args->{accounts}{$account->account_name} = $account;
}
return $args;
}
1;