#!/usr/bin/perl package MooseX::Status::Smoker; use lib qw(lib); use local::lib; use Moose; use Verby::Step::Closure qw/step chain_steps/; use IO::File; use Cwd; use POSIX qw(strftime); with qw(MooseX::Status::Verby MooseX::LogDispatch MooseX::Getopt); has report_list => ( isa => 'ArrayRef[Str]', is => 'ro', lazy_build => 1, auto_deref => 1, ); has base_dir => ( isa => 'Str', is => 'ro', default => sub { "$ENV{HOME}/dev/moose" }, ); has date => ( isa => 'Str', is => 'ro', default => sub { strftime '%Y%m%d', localtime }, ); has report_dir => ( isa => 'Str', is => 'ro', default => sub { cwd() . '/reports' }, ); sub trunk_for { my ( $self, $name ) = @_; return $self->base_dir . "/$name"; } sub report_for { my ( $self, $basename ) = @_; my $date = $self->date; my $report_name = "$basename-results-$date.txt"; return IO::File->new( '> ' . $self->report_dir . "/$report_name" ); } sub setup_one { my ( $self, $name ) = @_; my $trunk = $self->trunk_for($name); my $report = $self->report_for($name); chain_steps( step( 'MooseX::Status::Verby::Action::SVNUp', pre => sub { my ( $step, $c ) = @_; $c->workdir($trunk); $c->export('workdir'); }, provides_cxt => 1, ), step("Verby::Action::BuildTool"), step("Verby::Action::Make"), step('MooseX::Status::Verby::Action::Make', pre => sub { my ( $step, $c ) = @_; $c->report($report); $c->export('report'); $c->target('test'); $c->extra_args( ['TEST_VERBOSE=1'] ); }, ), ); } sub setup_install { my ( $self, $name ) = @_; chain_steps( $self->setup_one($name), step('Verby::Action::Make', pre => sub { my ( $self, $c ) = @_; $c->target('install'); }, ), ); } sub setup_base { my ($self) = @_; my $method = 'setup_one'; my $cmop = $self->$method('Class-MOP'); $self->logger->info("Created Class-MOP step: $cmop"); $self->add_step($cmop); my $moose = $self->$method('Moose'); $self->logger->info("Created Moose step: $cmop"); $self->add_step($moose); } sub setup_extended { } sub run { my ($self) = @_; $self->setup_base; $self->setup_extended; $self->do_all; } __PACKAGE__->new->run; no Moose; 1; __END__