package Common::DB::Deploy::Config;

use strict;
use warnings;

use Carp;
use AppConfig qw(:expand :argcount);
use Common::DB::Deploy::Defaults;

use constant OPTIONS => {
    CASE   => 0,
    ERROR  => \&_error,
    GLOBAL => {
        DEFAULT  => "<unset>",
        ARGCOUNT => ARGCOUNT_ONE,
        EXPAND   => EXPAND_VAR,
    },
};

sub new {
    my ($class, %args) = @_;

    my $self = {
        _file    => $args{config_file} || '',
        _oConfig => AppConfig->new( OPTIONS, %{ Common::DB::Deploy::Defaults->VARS } ),
    };

    $self->{_oConfig}->file( $self->{_file} );

    bless $self, $class;
    return $self;
}

sub get {
    my ($self, $param) = @_;
    return $self->{_oConfig}->get($param);
}

sub _error {
    croak 'Error to parse config file: ', @_;
}


1;