NAME

MooX::Ipc::Cmd - Moo role for issuing commands, with debug support, and signal handling

VERSION

version 1.2.1

SYNOPSIS

This role provides the ability to capture system calls, and to execute system calls.

Features

  • Prints output in realtime, in debug mode

  • Handles signals, and kills via signal if configured too.

  • Uses Log::Any for logging. If in debug mode, will log output of commands, and execution line

  • Command line option

package Moo_Package;
use Moo;
use MooX::Options; # required before with statement
with qw(MooX::Ipc::Cmd);

has '+_cmd_kill' => (default=>1); # override default
sub run {
    my $self=shift
    $self->_system(['cmd']);
    my @result=$self->_capture(['results']);
}
1;

package main
use Log::Any::Adapter('Stdout');  #setup Log::Any::Adapter;
my $app=Moo_Package->new_with_options(_cmd_kill=>0); #command line processing
my $app=Moo_Package->new(_cmd_kill=>0); #no command line processing
1;

ATTRIBUTES

_cmd_kill

If set to 1 will send the propgate signal when cmd exits due to signal.

Reader: _cmd_kill

Default: 1

mock

Mocks the cmd, does not run

Reader: mock

Default: 0

Command line option, via MooX::Options

METHODS

_system(\@cmd', /%opts);

Runs a command like system call, with the output silently dropped, unless in log::any debug level

Params:
$cmd : arrayref of the command to send to the shell
%opts
  valid_exit => [0] - exits to not throw exception, defaults to 0
Returns:

exit code

Exception

Throws an error when case dies, will also log error using log::any category _cmd

_capture(\@cmd',\%opts);

Runs a command like qx call. Will display cmd executed

Params:
$cmd: arrayref of the command to send to the shell
%opts:
   valid_exit => [0] - exits to not throw exception, defaults to 0
Returns:

combined stderr stdout

Exception

Throws an MooX::Ipc::Cmd::Exception error

AUTHOR

Eddie Ash <eddie+cpan@ashfamily.net>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Edward Ash.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.