]> git.vpit.fr Git - perl/modules/rgit.git/blobdiff - lib/App/Rgit/Command.pm
Get rid of validate()
[perl/modules/rgit.git] / lib / App / Rgit / Command.pm
index f2f043bd05b0b65aed70e2a0607e9515a7e65268..348b8c40aab70ef4c659ba8167ca287222b95807 100644 (file)
@@ -5,9 +5,7 @@ use warnings;
 
 use Carp qw/croak/;
 
-use Object::Tiny qw/cmd args policy/;
-
-use App::Rgit::Utils qw/validate :codes/;
+use App::Rgit::Utils qw/:codes/;
 
 =head1 NAME
 
@@ -15,11 +13,11 @@ App::Rgit::Command - Base class for App::Rgit commands.
 
 =head1 VERSION
 
-Version 0.03
+Version 0.06
 
 =cut
 
-our $VERSION = '0.03';
+our $VERSION = '0.06';
 
 =head1 DESCRIPTION
 
@@ -39,22 +37,29 @@ my %commands;
 __PACKAGE__->action($_ => 'Once') for qw/daemon gui help init version/, ' ';
 
 sub new {
- my ($class, %args) = &validate;
+ my $class = shift;
+ $class = ref $class || $class;
+
+ my %args = @_;
+
  my $cmd = $args{cmd};
  $cmd = ' ' unless defined $cmd;
+
  my $action = $class->action($cmd);
+
  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: $@";
- $class->SUPER::new(
+ bless {
   cmd    => $cmd,
   args   => $args{args} || [ ],
   policy => $args{policy},
);
}, $class;
 }
 
 =head2 C<< action $cmd [ => $pkg ] >>
@@ -80,13 +85,16 @@ sub action {
 
 =head2 C<report $conf, $repo, $status>
 
+Reports that the execution of the command in C<$repo> exited with C<$status> to the current command's policy.
+Returns what policy C<report> method returned, which should be one of the policy codes listed in C<App::Rgit::Utils>.
+
 =cut
 
 sub report {
  my ($self) = @_;
- my $cb = $self->policy;
return NEXT | SAVE unless $cb;
- my $code = $cb->(@_);
+
my $code = $self->policy->report(@_);
+
  return defined $code ? $code : NEXT;
 }
 
@@ -96,13 +104,18 @@ sub report {
 
 =head2 C<policy>
 
-Accessors.
+Read-only accessors.
+
+=cut
+
+BEGIN {
+ eval "sub $_ { \$_[0]->{$_} }" for qw/cmd args policy/;
+}
 
 =head2 C<run $conf>
 
 Runs the command with a L<App::Rgit::Config> configuration object.
-Stops as soon as one of the executed commands fails, and returns the corresponding exit code.
-Returns zero when all went fine.
+Handles back the code to return to the system and the last policy.
 Implemented in subclasses.
 
 =head1 SEE ALSO
@@ -112,7 +125,7 @@ L<rgit>.
 =head1 AUTHOR
 
 Vincent Pit, C<< <perl at profvince.com> >>, L<http://profvince.com>.
-   
+
 You can contact me by mail or on C<irc.perl.org> (vincent).
 
 =head1 BUGS
@@ -127,7 +140,7 @@ You can find documentation for this module with the perldoc command.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2008 Vincent Pit, all rights reserved.
+Copyright 2008-2009 Vincent Pit, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.