MooseX::App::Cmd - Mashes up L<MooseX::Getopt> and L<App::Cmd>.


MooseX-App-Cmd documentation Contained in the MooseX-App-Cmd distribution.

Index


Code Index:

NAME

Top

MooseX::App::Cmd - Mashes up MooseX::Getopt and App::Cmd.

SYNOPSIS

Top

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;
    } 

DESCRIPTION

Top

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.

AUTHOR

Top

Yuval Kogman <nothingmuch@woobling.org>

With contributions from:

Guillermo Roditi <groditi@cpan.org>

COPYRIGHT

Top


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__