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.