CLI-Framework

 view release on metacpan or  search on metacpan

t/define-classes-inline.t  view on Meta::CPAN

use strict;
use warnings;

use lib 'lib';
use lib 't/lib';

use Test::More tests => 1;
use File::Spec;

#~~~~~~
# Send STDOUT, STDERR to null device...
close STDOUT;
open ( STDOUT, '>', File::Spec->devnull() );
close STDERR;
open( STDERR, '>', File::Spec->devnull() );
#~~~~~~

ok( My::App->run() );

###################################
#
#   INLINE APPLICATION DEFINITION...
#
###################################

package My::App;
use base qw( CLI::Framework );

use strict;
use warnings;

#-------

sub usage_text {
    q{
    OPTIONS
        --db [path]  : db
        -v --verbose : be verbose
        -h --help    : show help

    COMMANDS
        x
    }
}

#-------

sub option_spec {
    [ 'help|h'      => 'show help' ],
    [ 'verbose|v'   => 'be verbose' ],
    [ 'db=s'        => 'db' ],
}

sub command_map {
    console => 'CLI::Framework::Command::Console',
    list    => 'CLI::Framework::Command::List',
    menu    => 'CLI::Framework::Command::Menu',
    'dump'  => 'CLI::Framework::Command::Dump',
    tree    => 'CLI::Framework::Command::Tree',
    x       => 'My::App::Command::X',
#    x       => 'My::Command::Shared::X',
}

sub command_alias {
    h   => 'help',

    t   => 'tree',
    d   => 'dump',

    sh  => 'console',
    c   => 'console',
    m   => 'menu',
}

#-------

sub init {
    my ($app, $opts) = @_;

    print __PACKAGE__.'::init()', "\n";
}

###################################
#
#   INLINE COMMAND DEFINITIONS...
#
###################################

package My::App::Command::X;
use base qw( CLI::Framework::Command );

use strict;
use warnings;

#-------

sub usage_text {
    q{
    x [--date=yyyy-mm-dd] [subcommands...]

    OPTIONS
       --date=yyyy-mm-dd:       date
   
    ARGUMENTS (subcommands)
        search:                    ...
    }
}

sub option_spec {
    return unless ref $_[0] eq __PACKAGE__; # non-inheritable behavior
    (
        [ 'date=s' => 'date that entry applies to' ],
    )
}

sub subcommand_alias {
    return unless ref $_[0] eq __PACKAGE__; # non-inheritable behavior



( run in 0.801 second using v1.01-cache-2.11-cpan-39bf76dae61 )