Test::AutoBuild::Command - The base class for executing commands


Test-AutoBuild documentation Contained in the Test-AutoBuild distribution.

Index


Code Index:

NAME

Top

Test::AutoBuild::Command - The base class for executing commands

SYNOPSIS

Top

  use Test::AutoBuild::Command;

  my $cmd = Test::AutoBuild::Command->new(cmd => \@cmd, dir => $path, env => \%ENV);

  # Execute the command
  my $status = $counter->run($stdout, $stderr)

METHODS

Top

my $stage = Test::AutoBuild::Command->new(cmd => \@cmd, dir => $path);

Creates a new command to be executed. The cmd argument provides an array ref for the command line to be run. The optional dir parameter provides a directory path which will be setup as the current working directory prior to executing the command.

my $status = $cmd->run($stdout, $stderr);

Execute the command sending its STDOUT to <$stdout> and its STDERR to $stderr. The $stdout and $stderr parameters can either contain file paths into which output will be written; be instances of IO::Handle to which output will be written, or simply be scalar references to collect the data in memory. If they are undef, then the output will be discarded. The returned $status is the command exit status, typically zero for success, non-zero for failure.

This method must be implemented by subclasses.

AUTHORS

Top

Daniel Berrange <dan@berrange.com>,

COPYRIGHT

Top

SEE ALSO

Top

perl(1), Test::AutoBuild, Test::AutoBuild::Runtime, Test::AutoBuild::Command::Local, Test::AutoBuild::Command::SELocal


Test-AutoBuild documentation Contained in the Test-AutoBuild distribution.
# -*- perl -*-
#
# Test::AutoBuild::Command
#
# Daniel Berrange <dan@berrange.com>
#
# Copyright (C) 2007 Daniel Berrange
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# $Id: Command.pm,v 1.2 2007/06/30 19:41:46 danpb Exp $

package Test::AutoBuild::Command;

use warnings;
use strict;
use Log::Log4perl;

use Class::MethodMaker
    [ new => [qw/ -init new /],
      scalar => [qw/ dir /],
      array => [qw/ cmd /],
      hash => [qw/ env options /]];

sub init {
    my $self = shift;
    my %params = @_;

    die "cmd parameter is required" unless $params{cmd};
    $self->cmd(@{$params{cmd}});
    $self->dir($params{dir}) if $params{dir};
    $self->env(%{$params{env}}) if $params{env};
    $self->options(%{$params{options}}) if $params{options};
}



sub run {
    my $self = shift;

    die "class " . ref($self) . " forgot to implement the run method";
}

1 # So that the require or use succeeds.

__END__