]> git.vpit.fr Git - perl/modules/rgit.git/blob - lib/App/Rgit/Policy.pm
Make sure the POD headings are linkable
[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.08
13
14 =cut
15
16 our $VERSION = '0.08';
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>
27
28     my $arp = App::Rgit::Policy->new(policy => $policy);
29
30 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.
31 The class represented by C<$policy> must inherit this class.
32
33 =cut
34
35 sub new {
36  my $class = shift;
37  $class = ref $class || $class;
38
39  my %args = @_;
40
41  if ($class eq __PACKAGE__) {
42   my $policy = delete $args{policy};
43   $policy = 'Default' unless defined $policy;
44   $policy = __PACKAGE__ . "::$policy" unless $policy =~ /::/;
45   eval "require $policy" or die $@;
46   return $policy->new(%args);
47  }
48
49  bless { }, $class;
50 }
51
52 =head2 C<handle>
53
54     my $code = $arp->handle($cmd, $config, $repo, $status, $signal);
55
56 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>.
57
58 This method must be implemented when subclassing.
59
60 =cut
61
62 sub handle;
63
64 =head1 SEE ALSO
65
66 L<rgit>.
67
68 =head1 AUTHOR
69
70 Vincent Pit, C<< <perl at profvince.com> >>, L<http://profvince.com>.
71
72 You can contact me by mail or on C<irc.perl.org> (vincent).
73
74 =head1 BUGS
75
76 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>.
77 I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
78
79 =head1 SUPPORT
80
81 You can find documentation for this module with the perldoc command.
82
83     perldoc App::Rgit::Policy
84
85 =head1 COPYRIGHT & LICENSE
86
87 Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
88
89 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
90
91 =cut
92
93 1; # End of App::Rgit::Policy