|
NAMEMooX::Cmd::Role - MooX cli app commands do this SYNOPSISusing role and want behavior as MooX::Cmd package MyFoo;
with MooX::Cmd::Role;
sub _build_command_execute_from_new { 1 }
package main;
my $cmd = MyFoo->new_with_cmd;
using role and don't execute immediately package MyFoo;
with MooX::Cmd::Role;
use List::MoreUtils qw/ first_idx /;
sub _build_command_base { "MyFoo::Command" }
sub _build_command_execute_from_new { 0 }
sub execute {
my $self = shift;
my $chain_idx = first_idx { $self == $_ } @{$self->command_chain};
my $next_cmd = $self->command_chain->{$chain_idx+1};
$next_cmd->owner($self);
$next_cmd->execute;
}
package main;
my $cmd = MyFoo->new_with_cmd;
$cmd->command_chain->[-1]->run();
explicit expression of some implicit stuff package MyFoo;
with MooX::Cmd::Role;
sub _build_command_base { "MyFoo::Command" }
sub _build_command_execute_method_name { "run" }
sub _build_command_execute_from_new { 0 }
package main;
my $cmd = MyFoo->new_with_cmd;
$cmd->command_chain->[-1]->run();
DESCRIPTIONMooX::Cmd::Role is made for modern, flexible Moo style to tailor cli commands. ATTRIBUTEScommand_argsARRAY-REF of args on command line command_chainARRAY-REF of commands lead to this instance command_chain_endCOMMAND accesses the finally detected command in chain command_nameARRAY-REF the name of the command lead to this command command_commandsHASH-REF names of other commands command_baseSTRING base of command plugins command_execute_method_nameSTRING name of the method to invoke to execute a command, default "execute" command_execute_return_method_nameSTRING I have no clue what that is good for ... command_creation_method_nameSTRING name of constructor command_creation_chain_methodsARRAY-REF names of methods to chain for creating object (from "command_creation_method_name") command_execute_from_newBOOL true when constructor shall invoke "command_execute_method_name", false otherwise METHODSnew_with_cmdinitializes by searching command line args for commands and invoke them execute_returnreturns the content of $self->{execute_return} LICENSE AND COPYRIGHTCopyright 2012-2013 Torsten Raudssus, Copyright 2013-2017 Jens Rehsack. This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See <http://dev.perl.org/licenses/> for more information.
|