SYNOPSIS
using 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();
DESCRIPTION
MooX::Cmd::Role is made for modern, flexible Moo style to tailor cli commands.ATTRIBUTES
command_args
ARRAY-REF of args on command linecommand_chain
ARRAY-REF of commands lead to this instancecommand_chain_end
COMMAND accesses the finally detected command in chaincommand_name
ARRAY-REF the name of the command lead to this commandcommand_commands
HASH-REF names of other commandscommand_base
STRING base of command pluginscommand_execute_method_name
STRING name of the method to invoke to execute a command, default ``execute''command_execute_return_method_name
STRING I have no clue what that is good for ...command_creation_method_name
STRING name of constructorcommand_creation_chain_methods
ARRAY-REF names of methods to chain for creating object (from ``command_creation_method_name'')command_execute_from_new
BOOL true when constructor shall invoke ``command_execute_method_name'', false otherwiseMETHODS
new_with_cmd
initializes by searching command line args for commands and invoke themexecute_return
returns the content of $self->{execute_return}LICENSE AND COPYRIGHT
Copyright 2012-2013 Torsten Raudssus, Copyright 2013-2015 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.