| MooseX-App-Cmd documentation | Contained in the MooseX-App-Cmd distribution. |
MooseX::App::Cmd - Mashes up MooseX::Getopt and App::Cmd.
See SYNOPSIS in App::Cmd.
package YourApp::Cmd;
use Moose;
extends qw(MooseX::App::Cmd);
package YourApp::Cmd::Command::blort;
use Moose;
extends qw(MooseX::App::Cmd::Command);
has blortex => (
isa => "Bool",
is => "rw",
cmd_aliases => "X",
documentation => "use the blortext algorithm",
);
has recheck => (
isa => "Bool",
is => "rw",
cmd_aliases => "r",
documentation => "recheck all results",
);
sub execute {
my ( $self, $opt, $args ) = @_;
# you may ignore $opt, it's in the attributes anyway
my $result = $self->blortex ? blortex() : blort();
recheck($result) if $self->recheck;
print $result;
}
This module marries App::Cmd with MooseX::Getopt.
Use it like App::Cmd advises (especially see App::Cmd::Tutorial), swapping App::Cmd::Command for MooseX::App::Cmd::Command.
Then you can write your moose commands as moose classes, with MooseX::Getopt
defining the options for you instead of opt_spec returning a
Getopt::Long::Descriptive spec.
Yuval Kogman <nothingmuch@woobling.org>
With contributions from:
Copyright (c) 2007-2008 Infinity Interactive, Yuval Kogman. All rights
reserved This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
| MooseX-App-Cmd documentation | Contained in the MooseX-App-Cmd distribution. |
#!/usr/bin/perl package MooseX::App::Cmd; use File::Basename (); use Moose; extends qw(Moose::Object App::Cmd); sub BUILDARGS { my $class = shift; return {} unless @_; return { arg => $_[0] } if @_ == 1;; return { @_ }; } sub BUILD { my ($self,$args) = @_; my $class = blessed $self; my $arg0 = $0; $self->{arg0} = File::Basename::basename($arg0); $self->{command} = $class->_command( {} ); $self->{full_arg0} = $arg0; } our $VERSION = "0.06"; __PACKAGE__; __END__