]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Command.pm
Improve the class delegation mechanism in App::Rgit::Command, and test it
[perl/modules/rgit.git] / lib / App / Rgit / Command.pm
index ce7bac636286209211361447e730dd3306fc045e..3754d83363bfc3af04a5e703f456c700e3f92ba5 100644 (file)
@@ -44,12 +44,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(
+ $class->SUPER::new(
   cmd         => $cmd,
   args        => $args{args} || [ ],
   repos       => $args{repos},