app::cli(3) osx man page | unix.com

Man Page: app::cli

Operating Environment: osx

Section: 3

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)
Related Man Pages
app::cli::command(3) - mojave
app::cli(3) - osx
app::cli::command(3pm) - debian
app::cmd::command::help(3pm) - debian
app::cmd::setup(3pm) - debian
Similar Topics in the Unix Linux Community
start dt apps from CLI
Logging commands and output
Natural CLI 1.2.2 (Default branch)
wrapper script in perl
Trying to get my computer to boot to CLI