use Carp qw/croak/;
-use Object::Tiny qw/cmd args/;
+use Object::Tiny qw/cmd args policy/;
-use App::Rgit::Utils qw/validate/;
+use App::Rgit::Utils qw/validate :codes/;
=head1 NAME
=head1 VERSION
-Version 0.03
+Version 0.05
=cut
-our $VERSION = '0.03';
+our $VERSION = '0.05';
=head1 DESCRIPTION
=cut
my %commands;
-__PACKAGE__->action($_ => 'Once') for qw/version help daemon init/, ' ';
+__PACKAGE__->action($_ => 'Once') for qw/daemon gui help init version/, ' ';
sub new {
my ($class, %args) = &validate;
}
eval "require $action; 1" or croak "Couldn't load $action: $@";
$class->SUPER::new(
- cmd => $cmd,
- args => $args{args} || [ ],
+ cmd => $cmd,
+ args => $args{args} || [ ],
+ policy => $args{policy},
);
}
$commands{$cmd} = $pkg;
}
+=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 the policy callback 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 $_[3] ? LAST : NEXT unless $cb;
+ my $code = $cb->(@_);
+ return defined $code ? $code : NEXT;
+}
+
=head2 C<cmd>
=head2 C<args>
+=head2 C<policy>
+
Accessors.
=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