Test::AutoBuild::Monitor::CommandLine - Monitor progress from 'ps'


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

Index


Code Index:

NAME

Top

Test::AutoBuild::Monitor::CommandLine - Monitor progress from 'ps'

SYNOPSIS

Top

  use Test::AutoBuild::Monitor::CommandLine

  my $monitor = Test::AutoBuild::CommandLine->new()

  # Emit some events
  $monitor->notify("beginStage", "build", time);
  $monitor->notify("endStage", "build", time, $status);

DESCRIPTION

Top

This module changes the process command line to reflect the current status. Thus the status can be viewed simply by running the 'ps' command. For example, after a single beginStage event for stage name 'build' it will show

   auto-build [running build]

After a second beginStage for stage name 'isos'

   auto-build [running build->isos]

After the second finishes

   auto-build [running build]

If there is a nested beginBuild event for module 'foo':

   auto-build [running build (foo)]

etc, etc.

CONFIGURATION

Top

This module merely uses the standard configuration parameters for Test::AutoBuild::Monitor, no options are neccessary

EXAMPLE

  cmd = {
    label = Command line monitor
    module = Test::AutoBuild::Monitor::CommandLine
  }

METHODS

Top

$monitor->init(%params);

This method initializes a new monitor & is called automatically by the new method. The %params parameters are passed through from the new method.

$monitor->process($event_name, @args);

This method changes the contents of $0 to reflect current build state. It understands the following events (which can be nested): beginStage, completeStage, failStage, abortStage, beginBuild, endBuild. beginCheckout, endCheckout. All other events are ignored.

AUTHORS

Top

Daniel Berrange <dan@berrange.com>

COPYRIGHT

Top

SEE ALSO

Top

perl(1), Test::AutoBuild::Monitor


Test-AutoBuild documentation Contained in the Test-AutoBuild distribution.
# -*- perl -*-
#
# Test::AutoBuild::Monitor::CommandLine by Daniel Berrange <dan@berrange.com>
#
# Copyright (C) 2005 Daniel Berrange <dan@berrange.com>
#
# 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: CommandLine.pm,v 1.6 2007/12/12 03:31:36 danpb Exp $

package Test::AutoBuild::Monitor::CommandLine;

use base qw(Test::AutoBuild::Monitor);
use warnings;
use strict;
use Test::AutoBuild::Lib;
use Carp qw(confess);
use POSIX qw(mkfifo);

sub init {
    my $self = shift;

    $self->SUPER::init(@_);

    $self->{command} = $0;
    $self->{stages} = [];
    $self->{module} = undef;
}

sub process {
    my $self = shift;
    my $name = shift;
    my @args = @_;

    if ($name eq "beginStage") {
	push @{$self->{stages}}, $args[0];

	$self->{module} = undef;
    } elsif ($name eq "completeStage" ||
	     $name eq "failStage" ||
	     $name eq "abortStage") {
	pop @{$self->{stages}};
	$self->{module} = undef;
    } elsif ($name eq "beginBuild") {
	$self->{module} = $args[0];
    } elsif ($name eq "endBuild") {
	$self->{module} = undef;
    } elsif ($name eq "beginCheckout") {
	$self->{module} = $args[0];
    } elsif ($name eq "endCheckout") {
	$self->{module} = undef;
    }

    $0 = $self->{command} .
	" [running " . join("->", @{$self->{stages}}) .
	($self->{module} ? " (" . $self->{module} . ")]" : "]");
}


1 # So that the require or use succeeds.

__END__