App-Oozie
view release on metacpan or search on metacpan
lib/App/Oozie.pm view on Meta::CPAN
package App::Oozie;
use 5.014;
use strict;
use warnings;
our $VERSION = '0.020'; # VERSION
use namespace::autoclean -except => [qw/_options_data _options_config/];
use Moo;
use MooX::Options prefer_commandline => 0,
protect_argv => 0,
usage_string => <<'USAGE',
Usage: %c %o action
USAGE
;
use App::Oozie::Util::Plugin qw( find_plugins );
with qw(
App::Oozie::Role::Log
);
option debug => (
is => 'rw',
doc => 'Enable debug messages',
);
sub run {
my $self = shift;
my $debug = $self->debug;
my $logger = $self->logger;
my $action_to_class = find_plugins('App::Oozie::Action');
if ( $debug ) {
$logger->debug( sprintf 'Found: %s', $_ )
for sort keys %{ $action_to_class };
}
my @valid = sort keys %{ $action_to_class };
my $action = shift( @ARGV ) || do {
my $msg = sprintf "Please specify an action. Possible actions are any one of:\n\n%s\n",
join q{}, map { "\t$_\n" } @valid
;
$self->options_usage(1, $msg);
};
$action =~ s{[_]}{-}xmsg;
my $class = $action_to_class->{ $action } || do {
my $msg = sprintf "The specified action `%s` is invalid. Possible actions are any one of:\n\n%s\n",
$action,
join q{}, map { "\t$_\n" } @valid
;
$self->options_usage(1, $msg);
};
my @cmd = (
$^X,
( map { '-I' . $_ } @INC ),
'-M' . $class,
'-E', "$class->new_with_options->run",
q{--},
@ARGV,
);
( run in 0.559 second using v1.01-cache-2.11-cpan-63c85eba8c4 )