]> git.vpit.fr Git - perl/modules/rgit.git/blob - lib/App/Rgit/Policy.pm
2a0c760a7abecbac835a021586b336949ed2c377
[perl/modules/rgit.git] / lib / App / Rgit / Policy.pm
1 package App::Rgit::Policy;
2
3 use strict;
4 use warnings;
5
6 =head1 NAME
7
8 App::Rgit::Policy - Base class for App::Rgit policies.
9
10 =head1 VERSION
11
12 Version 0.06
13
14 =cut
15
16 our $VERSION = '0.06';
17
18 =head1 DESCRIPTION
19
20 Base class for L<App::Rgit> policies.
21
22 This is an internal class to L<rgit>.
23
24 =head1 METHODS
25
26 =head2 C<< new policy => $policy >>
27
28 Creates a new policy object of type C<$policy> by requiring and redispatching the method call to the module named C<$policy> if it contains C<'::'> or to C<App::Rgit::Policy::$policy> otherwise.
29 The class represented by C<$policy> must inherit this class.
30
31 =cut
32
33 sub new {
34  my $class = shift;
35  $class = ref $class || $class;
36
37  my %args = @_;
38
39  if ($class eq __PACKAGE__) {
40   my $policy = delete $args{policy};
41   $policy = 'Default' unless defined $policy;
42   $policy = __PACKAGE__ . "::$policy" unless $policy =~ /::/;
43   eval "require $policy" or die $@;
44   return $policy->new(%args);
45  }
46
47  bless { }, $class;
48 }
49
50 =head2 C<handle $cmd, $config, $repo, $status, $signal>
51
52 Make the policy handle the end of execution of the L<App::Rgit::Command> object C<$cmd> with L<App::Rgit::Config> configuration C<$config> in the L<App::Rgit::Repository> repository C<$repo> that exited with status C<$status> and maybe received signal C<$sigal>.
53
54 This method must be implemented when subclassing.
55
56 =cut
57
58 sub handle;
59
60 =head1 SEE ALSO
61
62 L<rgit>.
63
64 =head1 AUTHOR
65
66 Vincent Pit, C<< <perl at profvince.com> >>, L<http://profvince.com>.
67
68 You can contact me by mail or on C<irc.perl.org> (vincent).
69
70 =head1 BUGS
71
72 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>.
73 I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
74
75 =head1 SUPPORT
76
77 You can find documentation for this module with the perldoc command.
78
79     perldoc App::Rgit::Policy
80
81 =head1 COPYRIGHT & LICENSE
82
83 Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
84
85 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
86
87 =cut
88
89 1; # End of App::Rgit::Policy