NAME
ArchWay::Util::RunCmd - add notification capabilities to Arch::Util::run_cmd
SYNOPSIS
package Some::CommandTracker;
sub cmd_start ($@) { my $this = shift; print "executing: [@_]\n"; } sub cmd_output_line ($$) { my $this = shift; my $line = shift; print "\t($line)\n"; } # ...
package main;
use Arch::Util qw(run_tla); # in any order use ArchWay::Util::RunCmd;
ArchWay::Util::RunCmd::observe("Some::CommandTracker"); my $archives = run_tla("archives", "-n");
# this may work too ArchWay::Util::RunCmd::observe(Some::CommandTracker->new);
DESCRIPTION
This class provides a way to register classes/objects that track any commands executed anywhere in the program using run_tla and run_cmd of Arch::Util, including their output.
The observer classes/objects need to three or less methods: cmd_start, cmd_output_line, cmd_end. The observer should not implement all methods, but it makes sense to implement at least the first one.
cmd_start method is called with all command arguments as parameters, i.e. ($observer, ``tla'', ``archives'', ``-n'').
cmd_output_line method is called with command output line as parameter.
cmd_end is called without parameters.
FUNCTIONS
The following public functions are available:
observe, unobserve.
- ArchWay::Util::RunCmd::observe observer
- Receives an observer class name or object. It should implement some of the methods described above.
- ArchWay::Util::RunCmd::unobserve observer
- Stops notification of the given observer that should be the same one passed to observe.
BUGS
No known bugs.
AUTHORS
Mikhael Goikhman (migo@homemail.com--Perl-GPL/archway--devel)
SEE ALSO
For more information, see Arch::Util.