X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FApp%2FRgit%2FUtils.pm;h=21004ded2730d2b2196c92a48355ddb4bcdc43c7;hb=a2a9110d666dcd61af2573a7ad977cf441587d21;hp=65674de38b2c728827fa04eb0096e0b3497508fd;hpb=511d4fe4b46173353cd1fdcac0d26ac067868280;p=perl%2Fmodules%2Frgit.git diff --git a/lib/App/Rgit/Utils.pm b/lib/App/Rgit/Utils.pm index 65674de..21004de 100644 --- a/lib/App/Rgit/Utils.pm +++ b/lib/App/Rgit/Utils.pm @@ -3,17 +3,20 @@ package App::Rgit::Utils; use strict; use warnings; +use Cwd (); # abs_path +use File::Spec (); # file_name_is_absolute, updir, splitdir, splitpath + =head1 NAME App::Rgit::Utils - Miscellaneous utilities for App::Rgit classes. =head1 VERSION -Version 0.06 +Version 0.07 =cut -our $VERSION = '0.06'; +our $VERSION = '0.07'; =head1 DESCRIPTION @@ -21,6 +24,29 @@ Miscellaneous utilities for L classes. This is an internal module to L. +=head1 FUNCTIONS + +=head2 C + +Forcefully make a path C<$path> absolute (in L's meaning of the term) when it isn't already absolute or when it contains C<'..'>. + +=cut + +sub abs_path { + my ($path) = @_; + + if (File::Spec->file_name_is_absolute($path)) { + my $updir = File::Spec->updir; + my @chunks = File::Spec->splitdir((File::Spec->splitpath($path))[1]); + + unless (grep $_ eq $updir, @chunks) { + return $path; + } + } + + return Cwd::abs_path($path); +} + =head1 CONSTANTS =head2 C, C, C, C @@ -51,6 +77,8 @@ use constant { =head1 EXPORT +L is only exported on request. + C C, C and C are only exported on request, either by their name or by the C<'codes'> tags. C, C, C and C are only exported on request, either by their name or by the C<'levels'> tags. @@ -61,6 +89,7 @@ use base qw/Exporter/; our @EXPORT = (); our %EXPORT_TAGS = ( + funcs => [ qw/abs_path/ ], codes => [ qw/SAVE NEXT REDO LAST/ ], levels => [ qw/INFO WARN ERR CRIT/ ], );