diff options
Diffstat (limited to 'lib/Config/ClawsMail.pm')
-rw-r--r-- | lib/Config/ClawsMail.pm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/Config/ClawsMail.pm b/lib/Config/ClawsMail.pm new file mode 100644 index 0000000..4543a18 --- /dev/null +++ b/lib/Config/ClawsMail.pm @@ -0,0 +1,35 @@ +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; |