use base qw/App::Rgit::Command/;
+use App::Rgit::Guard;
use App::Rgit::Utils qw/:codes/;
=head1 NAME
sub run {
my $self = shift;
my $conf = shift;
+
my $status = 0;
my $code;
+
+ my $repos = 0;
+ my $guard = App::Rgit::Guard->new(sub { $conf->cwd_repo->chdir if $repos });
+
for (@{$conf->repos}) {
$_->chdir or next;
+ ++$repos;
+
($status, my $signal) = $_->run($conf, @{$self->args});
+
$code = $self->report($conf, $_, $status, $signal) unless defined $code;
+
last if $code & LAST;
if ($code & REDO) {
undef $code; # Don't save it, that would be very dumb
}
undef $code unless $code & SAVE;
}
- $conf->cwd_repo->chdir;
+
return wantarray ? ($status, $code) : $status;
}