Archer
view release on metacpan or search on metacpan
lib/Archer.pm view on Meta::CPAN
$self->log( 'info' => "run @{[ $plugin->{name} ]} ( $class )" );
}
$class->new(
{ config => $plugin->{ config },
project => $self->{ project },
%$args
}
)->run( $self, $args );
print "\n\n"; # for debug.
}
}
sub run_process {
my ( $self ) = @_;
my $parallel = $self->{ config }->{ global }->{ parallel }
|| 'Archer::Parallel::ForkManager';
$parallel->use or die $@;
my $server_tree = $self->{config}->{projects}->{$self->{project}};
my @elems;
while ( my ( $role, $servers ) = each %$server_tree ) {
next if $self->{role} && $self->{role} ne $role;
for my $server ( @$servers ) {
push @elems, { server => $server, role => $role };
}
}
$self->log( debug => "run parallel : $self->{parallel_num}" );
my $manager = $parallel->new;
$manager->run(
{ elems => \@elems,
callback => sub {
my $args = shift;
$self->run_hook( 'process', $args );
},
num => $self->{ parallel_num },
}
);
}
sub bootstrap {
my ( $class, $opts ) = @_;
my $self = $class->new( $opts );
$self->run;
return $self;
}
sub log {
my ( $self, $level, $msg, %opt ) = @_;
return unless $self->should_log( $level );
# hack to get the original caller as Plugin or Rule
# from plagger.
my $caller = $opt{ caller };
unless ( $caller ) {
my $i = 0;
while ( my $c = caller( $i++ ) ) {
last if $c !~ /Plugin|Rule/;
$caller = $c;
}
$caller ||= caller( 0 );
}
warn "$caller [$level] $msg\n";
}
my %levels = (
debug => 0,
warn => 1,
info => 2,
error => 3,
);
sub should_log {
my ( $self, $level ) = @_;
my $setting_level = $self->{config}->{global}->{log}->{level} || 'debug';
$levels{ $level } >= $levels{ $setting_level };
}
1;
__END__
=head1 NAME
Archer - yet another deployment tool
=head1 DESCRIPTION
This is yet another deployment tool :)
=head1 AUTHORS
Tokuhiro Matsuno and Archer contributors.
=head1 TODO
=head1 SEE ALSO
L<capistrano>
=head1 LICENSE
Copyright (C) Tokuhiro Matsuno
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
( run in 1.458 second using v1.01-cache-2.11-cpan-5a3173703d6 )