package Config::ClawsMail; use Moo; # VERSION use Config::INI::Reader; use Config::ClawsMail::Account; use Types::Standard qw(HashRef InstanceOf); use Path::Tiny; use namespace::clean; # ABSTRACT: Claws-Mail config parser 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;