Pinto-Remote-SelfContained
view release on metacpan or search on metacpan
lib/Pinto/Remote/SelfContained/App.pm view on Meta::CPAN
grep defined $command_info{$_}{pos}, keys %command_info),
undef,
(grep !defined $command_info{$_}{pos}, sort keys %command_info),
);
}
sub parse_from_argv {
my ($class, $argv) = @_;
my $orig_cmd = do {
local @ARGV = @$argv;
() = describe_options('', $class->global_opt_spec, { getopt_conf => ['gnu_getopt', 'pass_through'] });
print($class->help_summary), exit
if !@ARGV; # "pintor", "pintor --help", "pintor -r URL", "pintor --username fred", etc
$ARGV[0];
};
my $cmd = $class->command_alias->{$orig_cmd} // $orig_cmd;
my $command_info = $class->command_info;
my $info = $command_info->{$cmd} // do {
print $class->help_summary;
exit 2;
};
my $usage_desc = $info->{usage_desc};
my @opt_spec = (@{ $info->{opt_spec} }, [], $class->global_opt_spec);
local @ARGV = @$argv;
my ($opt, $usage) = describe_options($usage_desc, @opt_spec, { getopt_conf => ['gnu_getopt'] });
die "BUG; cmd=$cmd but not next in argv"
if !@ARGV || shift(@ARGV) ne $orig_cmd;
if ($opt->help || $cmd eq 'help' && !@ARGV) {
say $usage->text;
exit 0;
}
elsif ($cmd eq 'commands') {
lib/Pinto/Remote/SelfContained/App.pm view on Meta::CPAN
my $exit_status = 0;
my $command_alias = $class->command_alias;
for my $arg (@argv) {
my $cmd = $command_alias->{$arg} // $arg;
my $info = $command_info->{$cmd} // do {
warn "No command '$cmd' found\n\n";
$exit_status = 2;
next;
};
my (undef, $usage) = do {
local @ARGV;
describe_options($info->{usage_desc}, [], @{ $info->{opt_spec} }, {
getopt_conf => ['gnu_getopt', 'pass_through'],
});
};
say $usage->text;
}
return $exit_status;
}
sub parse_arguments {
( run in 1.372 second using v1.01-cache-2.11-cpan-49f99fa48dc )