MooX::Cmd::Role - MooX cli app commands do this
version 0.009
package MyFoo; with MooX::Cmd::Role; sub _build_command_execute_from_new { 1 } package main; my $cmd = MyFoo->new_with_cmd;
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();
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();
MooX::Cmd::Role is made for modern, flexible Moo style to tailor cli commands.
ARRAY-REF of args on command line
ARRAY-REF of commands lead to this instance
COMMAND accesses the finally detected command in chain
ARRAY-REF the name of the command lead to this command
HASH-REF names of other commands
STRING base of command plugins
STRING name of the method to invoke to execute a command, default "execute"
STRING I have no clue what that is goood for ...
STRING name of constructor
ARRAY-REF names of methods to chain for creating object (from "command_creation_method_name")
BOOL true when constructor shall invoke "command_execute_method_name", false otherwise
initializes by searching command line args for commands and invoke them
returns the content of $self->{execute_return}
Torsten Raudssus <torsten@raudss.us>
This software is copyright (c) 2013 by Torsten Raudssus.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install MooX::Cmd, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooX::Cmd
CPAN shell
perl -MCPAN -e shell install MooX::Cmd
For more information on module installation, please visit the detailed CPAN module installation guide.