CPAN-Unpack
view release on metacpan or search on metacpan
lib/CPAN/Unpack.pm view on Meta::CPAN
my %unpacked_versions;
if ( -e "$destination/unpacked_versions.yml" ) {
local $/;
open( my $fh, "<", "$destination/unpacked_versions.yml" );
%unpacked_versions = %{ YAML::Any::Load(<$fh>) };
close $fh;
}
sub fixme {
my $path = $_;
my $mode = ( stat($path) )[2];
if ( S_ISDIR($mode) ) {
chmod( ( S_IMODE($mode) | S_IRWXU ), $path )
unless ( ( $mode & S_IRWXU ) == S_IRWXU );
}
}
my $p = Parse::CPAN::Packages::Fast->new($packages_filename);
foreach my $distribution ( $p->latest_distributions ) {
$counter++;
my $want = "$destination/" . $distribution->dist;
my $archive_filename = "$cpan/authors/id/" . $distribution->prefix;
lib/CPAN/Unpack.pm view on Meta::CPAN
$extract->extract( to => $to );
# Fix up broken permissions
File::Find::find( { wanted => \&fixme, follow => 0, no_chdir => 1 },
$to );
my @files = <$to/*>;
my $files = @files;
if ( $files == 1 ) {
my $file = $files[0];
if ( S_ISDIR( ( stat( $file ) )[2] ) ) {
rename $file, $want;
} else {
mkdir $want;
rename $file, "$want/" . basename($file);
}
rmdir $to;
} else {
rename $to, $want;
}
( run in 0.762 second using v1.01-cache-2.11-cpan-49f99fa48dc )