package Catmandu::CLI;

use Catmandu::Sane;
use App::Cmd::Setup -app;
use Catmandu;

sub plugin_search_path { 'Catmandu::Cmd' }

sub global_opt_spec {
    (
        ['load_path|L=s@', ""],
    );
}

# overload run to read the global options before
# the App::Cmd object is created
sub run {
    my ($class) = @_;

    my ($global_opts, $argv) = $class->_process_args([@ARGV], $class->_global_option_processing_params);

    my $load_path = $global_opts->{load_path};
    Catmandu->load(@$load_path);

    my $self = $class->new;
    $self->set_global_options($global_opts);
    my ($cmd, $opts, @args) = $self->prepare_command(@$argv);
    $self->execute_command($cmd, $opts, @args);
}

1;
