]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Command/Each.pm
This is 0.08
[perl/modules/rgit.git] / lib / App / Rgit / Command / Each.pm
index ef384b76789af71aab74c27a25afdf7238e09d2b..b50e18040c60df1f202878cb5179dedef3f91e4d 100644 (file)
@@ -5,6 +5,7 @@ use warnings;
 
 use base qw/App::Rgit::Command/;
 
+use App::Rgit::Guard;
 use App::Rgit::Utils qw/:codes/;
 
 =head1 NAME
@@ -13,11 +14,11 @@ App::Rgit::Command::Each - Class for commands to execute for each repository.
 
 =head1 VERSION
 
-Version 0.06
+Version 0.08
 
 =cut
 
-our $VERSION = '0.06';
+our $VERSION = '0.08';
 
 =head1 DESCRIPTION
 
@@ -38,12 +39,21 @@ It implements :
 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
@@ -51,7 +61,7 @@ sub run {
   }
   undef $code unless $code & SAVE;
  }
- $conf->cwd_repo->chdir;
+
  return wantarray ? ($status, $code) : $status;
 }
 
@@ -69,7 +79,8 @@ You can contact me by mail or on C<irc.perl.org> (vincent).
 
 =head1 BUGS
 
-Please report any bugs or feature requests to C<bug-rgit at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=rgit>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
+Please report any bugs or feature requests to C<bug-rgit at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=rgit>.
+I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
 
 =head1 SUPPORT