#!/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 => "Object",
	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 {};
	}
}
