X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FApp%2FRgit%2FRepository.pm;h=8356f246cf2f9f0ab1834965bfa15a9fb4e24518;hb=80656eec9bd2400f8db71d0d10d7d0be54139667;hp=a9215764fe68702825c5fa4e50f3013c4f49f6fa;hpb=20ecc90aa6c17a07fd1200d0bf72d5918e53e106;p=perl%2Fmodules%2Frgit.git diff --git a/lib/App/Rgit/Repository.pm b/lib/App/Rgit/Repository.pm index a921576..8356f24 100644 --- a/lib/App/Rgit/Repository.pm +++ b/lib/App/Rgit/Repository.pm @@ -3,15 +3,23 @@ package App::Rgit::Repository; use strict; use warnings; -use Cwd (); # cwd, abs_path +use Cwd (); # cwd use File::Spec (); # canonpath, catdir, splitdir, abs2rel -use POSIX qw/WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG SIGINT SIGQUIT/; +use POSIX (); # WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG SIGINT SIGQUIT + +use App::Rgit::Utils (); # abs_path + +my ($WIFEXITED, $WEXITSTATUS, $WIFSIGNALED, $WTERMSIG); BEGIN { - no warnings 'redefine'; - *WIFEXITED = sub { 1 } unless eval { WIFEXITED(0); 1 }; - *WEXITSTATUS = sub { shift() >> 8 } unless eval { WEXITSTATUS(0); 1 }; - *WIFSIGNALED = sub { shift() & 127 } unless eval { WIFSIGNALED(0); 1 }; + $WIFEXITED = eval { POSIX::WIFEXITED(0); 1 } ? \&POSIX::WIFEXITED + : sub { 1 }; + $WEXITSTATUS = eval { POSIX::WEXITSTATUS(0); 1 } ? \&POSIX::WEXITSTATUS + : sub { shift() >> 8 }; + $WIFSIGNALED = eval { POSIX::WIFSIGNALED(0); 1 } ? \&POSIX::WIFSIGNALED + : sub { shift() & 127 }; + $WTERMSIG = eval { POSIX::WTERMSIG(0); 1 } ? \&POSIX::WTERMSIG + : sub { shift() & 127 }; } =head1 NAME @@ -20,11 +28,11 @@ App::Rgit::Repository - Class representing a Git repository. =head1 VERSION -Version 0.06 +Version 0.08 =cut -our $VERSION = '0.06'; +our $VERSION = '0.08'; =head1 DESCRIPTION @@ -34,7 +42,12 @@ This is an internal class to L. =head1 METHODS -=head2 C<< new dir => $dir [, fake => 1 ] >> +=head2 C + + my $arr = App::Rgit::Repository->new( + dir => $dir, + fake => $bool, + ); Creates a new repository starting from C<$dir>. If the C option is passed, C<$dir> isn't checked to be a valid C repository. @@ -49,7 +62,7 @@ sub new { my $dir = $args{dir}; if (defined $dir) { - $dir = Cwd::abs_path($dir); + $dir = App::Rgit::Utils::abs_path($dir); } else { $dir = Cwd::cwd; } @@ -108,7 +121,9 @@ sub chdir { return 1; } -=head2 C +=head2 C + + my $code = $arr->run($conf, @args); Runs C on the repository for the L configuration C<$conf>. When the repository isn't fake, the format substitutions applies to C<@args> elements. @@ -168,12 +183,12 @@ sub run { } my $ret; - $ret = WEXITSTATUS($?) if WIFEXITED($?); + $ret = $WEXITSTATUS->($?) if $WIFEXITED->($?); my $sig; - if (WIFSIGNALED($?)) { - $sig = WTERMSIG($?); + if ($WIFSIGNALED->($?)) { + $sig = $WTERMSIG->($?); $conf->warn("git died with signal $sig\n"); - if ($sig == SIGINT || $sig == SIGQUIT) { + if ($sig == POSIX::SIGINT() || $sig == POSIX::SIGQUIT()) { $conf->err("Aborting\n"); exit $sig; } @@ -199,7 +214,7 @@ Read-only accessors. =cut BEGIN { - eval "sub $_ { \$_[0]->{$_} }" for qw/fake repo bare name work/; + eval "sub $_ { \$_[0]->{$_} }" for qw; } =head1 SEE ALSO @@ -214,7 +229,8 @@ You can contact me by mail or on C (vincent). =head1 BUGS -Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. +Please report any bugs or feature requests to C, or through the web interface at L. +I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT