/usr/local/CPAN/Mail-Summary-Tools/Mail/Summary/Tools/CLI/Config.pm
#!/usr/bin/perl
package Mail::Summary::Tools::CLI::Config;
use Moose;
use File::Save::Home ();
use Path::Class;
use YAML::Syck;
has homedir => (
isa => "Path::Class::Dir",
is => "rw",
lazy => 1,
default => sub { Path::Class::dir($_[0]->find_homedir) },
);
has config_file => (
isa => "Path::Class::File",
is => "rw",
lazy => 1,
default => sub { $_[0]->homedir->file("config") },
);
has config => (
isa => "HashRef",
is => "rw",
lazy => 1,
default => sub { $_[0]->_load_config },
);
sub find_homedir {
my $self = shift;
return File::Save::Home::make_subhome_directory(
File::Save::Home::get_subhome_directory_status(".mailsum"),
);
}
sub defaults {
my $self = shift;
$self->config->{defaults} || {};
}
sub option_value {
my ( $self, $command, $option ) = @_;
my $defaults = $self->defaults;
for ( $command, "all" ) {
if ( exists $defaults->{$_}{$option} ) {
return $defaults->{$_}{$option};
}
}
return;
}
sub _load_config {
my $self = shift;
if ( -e $self->config_file ) {
YAML::Syck::LoadFile( $self->config_file->stringify );
} else {
return {};
}
}
1;