App-BambooCli
view release on metacpan or search on metacpan
lib/App/BambooCli.pm view on Meta::CPAN
package App::BambooCli;
# Created on: 2019-05-15 09:09:16
# Create by: Ivan Wills
# $Id$
# $Revision$, $HeadURL$, $Date$
# $Revision$, $Source$, $Date$
use Moo;
use warnings;
use version;
use Carp;
use Scalar::Util;
use List::Util;
#use List::MoreUtils;
use Getopt::Alt;
use Data::Dumper qw/Dumper/;
use English qw/ -no_match_vars /;
use Path::Tiny;
use YAML::Syck qw/ LoadFile DumpFile /;
use App::BambooCli::Config;
our $VERSION = version->new('0.0.1');
has config => (
is => 'rw',
);
has sub_commands => (
is => 'rw',
lazy => 1,
builder => '_sub_commands',
);
sub start {
my ($self) = @_;
my @sub_commands = keys %{ $self->sub_commands };
my ($options, $cmd, $opt) = get_options(
{
name => 'bamboo',
conf_prefix => '.',
helper => 1,
default => {
config => {},
test => 0,
},
auto_complete => sub {
my ($option, $auto, $errors) = @_;
my $sub_command = $option->files->[0] || '';
if ( $sub_command eq '--' ) {
print join ' ', sort @sub_commands;
return;
}
elsif ( grep {/^$sub_command./} @sub_commands ) {
print join ' ', sort grep {/^$sub_command/} @sub_commands;
return;
}
elsif ( ! $self->sub_commands->{$sub_command} ) {
unshift @{$option->files}, $sub_command;
$sub_command = $ENV{VTIDE_DIR} ? 'edit' : 'start';
}
eval {
$self->load_subcommand( $sub_command, $option )->auto_complete($auto);
1;
} or do {
print join ' ', grep {/$sub_command/xms} sort @sub_commands;
}
},
auto_complete_shortener => sub {
my ($getopt, @args) = @_;
my $sub_command = shift @args || '';
if ( grep {/^$sub_command./} @sub_commands ) {
$getopt->cmd($sub_command);
}
elsif ( ! $self->sub_commands->{$sub_command} ) {
( run in 1.933 second using v1.01-cache-2.11-cpan-5a3173703d6 )