summaryrefslogtreecommitdiff
path: root/lib/Config/ClawsMail.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Config/ClawsMail.pm')
-rw-r--r--lib/Config/ClawsMail.pm35
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;