App::CLI::Command(3) User Contributed Perl Documentation App::CLI::Command(3)NAME
App::CLI::Command - Base class for App::CLI commands
SYNOPSIS
package MyApp::List;
use base qw(App::CLI::Command);
use constant options => (
'verbose' => 'verbose',
'n|name=s' => 'name',
);
sub run {
my ( $self, $arg ) = @_;
print "verbose" if $self->{verbose};
my $name = $self->{name}; # get arg following long option --name
# any thing your want this command do
}
# See App::CLI for information of how to invoke (sub)command.
DESCRIPTION
subcommand()
return old genre subcommand of $self;
cascading()
return instance of cascading subcommand invoked if it was listed in your constant subcommands.
cascadable()
return package name of subcommand if the subcommand invoked is in you constant subcommands
otherwise, return undef
brief_usage ($file)
Display an one-line brief usage of the command object. Optionally, a file could be given to extract the usage from the POD.
usage ($want_detail)
Display usage. If $want_detail is true, the "DESCRIPTION" section is displayed as well.
loc_text $text
Localizes the body of (formatted) text in $text, and returns the localized version.
filename
Return the filename for the command module.
SEE ALSO
App::CLI Getopt::Long
AUTHORS
Chia-liang Kao <clkao@clkao.org> Cornelius Lin <cornelius.howl@gmail.com> shelling <navyblueshellingford@gmail.com>
COPYRIGHT
Copyright 2005-2006 by Chia-liang Kao <clkao@clkao.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
perl v5.16.2 2010-12-02 App::CLI::Command(3)
Check Out this Related Man Page
App::CLI(3) User Contributed Perl Documentation App::CLI(3)NAME
App::CLI - Dispatcher module for command line interface programs
SYNOPSIS
package MyApp;
use base 'App::CLI'; # the DISPATCHER of your App
# it's not necessary putting the dispather
# on the top level of your App
package main;
MyApp->dispatch; # call dispather in where you want
package MyApp::List;
use base qw(App::CLI::Command); # any (SUB)COMMAND of your App
use constant options => qw(
"h|help" => "help",
"verbose" => "verbose",
'n|name=s' => 'name',
);
use constant subcommands => qw(User Nickname type); # if you want subcommands
# automatically dispatch to subcommands
# when invoke $ myapp list [user|nickname|--type]
# note 'type' lower case in first char
# is subcommand of old genre which is deprecated
sub run {
my ($self, @args) = @_;
print "verbose" if $self->{verbose};
my $name = $self->{name}; # get arg following long option --name
if ($self->{help}) {
# if $ myapp list --help or $ $ myapp list -h
# just only output PODs
} else {
# do something when imvoking $ my app list
# without subcommand and --help
}
}
package MyApp::List::User;
use base qw(App::CLI::Command);
use constant options => (
"h|help" => "help",
);
sub run {
my ($self,@args) = @_;
# code for listing user
}
pakcage MyApp::List::Nickname;
use base qw(App::CLI::Command);
use constant options => (
"sort=s" => "sort",
);
sub run {
my ($self,@args) = @_;
# code for listing nickname
}
package MyApp::List::type; # old genre of subcommand could not be cascading infinitely
use base qw(MyApp::List); # should inherit its parents command
sub run {
my ($self, @args);
# run to here when invoking $ myapp list --type
}
package MyApp::Help;
use base 'App::CLI::Command::Help';
use constant options => (
'verbose' => 'verbose',
);
sub run {
my ($self, @arg) = @_;
# do something
$self->SUPER(@_); # App::CLI::Command::Help would output PDOs of each command
}
DESCRIPTION
"App::CLI" dispatches CLI (command line interface) based commands into command classes. It also supports subcommand and per-command
options.
get_opt([@config], %opt_map)
give options map, process by Getopt::Long::Parser
interface of dispatcher
cmd_map($cmd)
find package name of subcommand in constant %alias
if it's finded, return ucfirst of the package name,
otherwise, return ucfirst of $cmd itself.
get_cmd($cmd, @arg)
return subcommand of first level via $ARGV[0]
SEE ALSO
App::CLI::Command Getopt::Long
AUTHORS
Chia-liang Kao <clkao@clkao.org> Cornelius Lin <cornelius.howl@gmail.com> shelling <navyblueshellingford@gmail.com>
COPYRIGHT
Copyright 2005-2006 by Chia-liang Kao <clkao@clkao.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
perl v5.16.2 2010-12-04 App::CLI(3)