]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Command.pm
App::Rgit::Command doesn't need App::Rgit::Repository anymore
[perl/modules/rgit.git] / lib / App / Rgit / Command.pm
index ce7bac636286209211361447e730dd3306fc045e..644c05be2ae9e5d040ebf1fe0c785a49bae7b3ee 100644 (file)
@@ -5,10 +5,9 @@ use warnings;
 
 use Carp qw/croak/;
 
-use Object::Tiny qw/cmd cwd_as_repo args repos/;
+use Object::Tiny qw/cmd args/;
 
 use App::Rgit::Utils qw/validate/;
-use App::Rgit::Repository;
 
 =head1 NAME
 
@@ -16,11 +15,11 @@ App::Rgit::Command - Base class for App::Rgit commands.
 
 =head1 VERSION
 
-Version 0.01
+Version 0.02
 
 =cut
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 =head1 DESCRIPTION
 
@@ -30,9 +29,9 @@ This is an internal class to L<rgit>.
 
 =head1 METHODS
 
-=head2 C<< new cmd => $cmd, args => \@args, repos => \@repos >>
+=head2 C<< new cmd => $cmd, args => \@args >>
 
-Creates a new command object for C<$cmd> that will called for all repositories C<@repos> with arguments C<@args>.
+Creates a new command object for C<$cmd> that is bound to be called with arguments C<@args>.
 
 =cut
 
@@ -44,16 +43,16 @@ sub new {
  my $cmd = $args{cmd};
  $cmd = ' ' unless defined $cmd;
  my $action = $class->action($cmd);
- croak "Command $cmd shouldn't be executed as an $action"
-                           unless $class eq __PACKAGE__ or $class->isa($action);
+ if ($class eq __PACKAGE__) {
+  $class = $action;
+ } else {
+  croak "Command $cmd should be executed as a $action"
+                               unless $class->isa($action);
+ }
  eval "require $action; 1" or croak "Couldn't load $action: $@";
- my $r = App::Rgit::Repository->new(fake => 1);
- return unless defined $r;
- $action->SUPER::new(
-  cmd         => $cmd,
-  args        => $args{args} || [ ],
-  repos       => $args{repos},
-  cwd_as_repo => $r,
+ $class->SUPER::new(
+  cmd  => $cmd,
+  args => $args{args} || [ ],
  );
 }
 
@@ -66,9 +65,10 @@ Otherwise, returns the current class for C<$cmd>.
 
 sub action {
  my ($self, $cmd, $pkg) = @_;
- $cmd = $self->cmd if !defined $cmd
-                   and defined $self and $self->isa(__PACKAGE__);
- return unless defined $cmd;
+ if (not defined $cmd) {
+  return unless defined $self and ref $self and $self->isa(__PACKAGE__);
+  $cmd = $self->cmd;
+ }
  unless (defined $pkg) {
   return __PACKAGE__ . '::Each' unless defined $commands{$cmd};
   return $commands{$cmd}
@@ -79,12 +79,8 @@ sub action {
 
 =head2 C<cmd>
 
-=head2 C<cwd_as_repo>
-
 =head2 C<args>
 
-=head2 C<repos>
-
 Accessors.
 
 =head2 C<run $conf>