CPAN-Cpanorg-Auxiliary
view release on metacpan or search on metacpan
lib/CPAN/Cpanorg/Auxiliary.pm view on Meta::CPAN
=item * Comment
=back
=cut
sub print_file {
my ( $self, $data ) = @_;
path($self->{path_versions_json})->spew_utf8($data)
or croak "Could not write $self->{path_versions_json}";
}
##### INTERNAL SUBROUTINES #####
=head2 file_meta
my $meta = file_meta($file);
print $meta->{file};
print $meta->{filename};
print $meta->{filedir};
print $meta->{md5};
print $meta->{sha256};
print $meta->{mtime};
print $meta->{sha1};
Get or calculate meta information about a file
=cut
sub file_meta {
my $file = shift;
my $filename = basename($file);
my $dir = dirname($file);
my $checksum = File::Spec->catfile($dir, 'CHECKSUMS');
# The CHECKSUM file has already calculated
# lots of this so use that
my $cksum;
unless ( defined( $cksum = do $checksum ) ) {
die qq[Checksums file "$checksum" not found\n];
}
# Calculate the sha1
my $sha1;
if ( open( my $fh, "openssl sha1 $file |" ) ) {
while (<$fh>) {
if (/^SHA1\(.+?\)= ([0-9a-f]+)$/) {
$sha1 = $1;
last;
}
}
}
die qq[Failed to compute sha1 for $file\n] unless defined $sha1;
return {
file => $file,
filedir => $dir,
filename => $filename,
mtime => ( stat($file) )[9],
md5 => $cksum->{$filename}->{md5},
sha256 => $cksum->{$filename}->{sha256},
sha1 => $sha1,
};
}
sub print_file_if_different {
my ( $file, $data ) = @_;
if ( -r $file ) {
my $content = path($file)->slurp_utf8;
return if $content eq $data;
}
path($file)->spew_utf8($data)
or die "Could not write $file: $!";
}
=head2 create_symlink
create_symlink($oldfile, $newfile);
Will unlink $newfile if it already exists and then create
the symlink.
=cut
sub create_symlink {
my ( $oldfile, $newfile ) = @_;
# Clean out old symlink if it does not point to correct location
if ( -l $newfile && readlink($newfile) ne $oldfile ) {
unlink($newfile);
}
symlink( $oldfile, $newfile ) unless -l $newfile;
}
=head2 C<sort_versions()>
=over 4
=item * Purpose
Produce appropriately sorted list of Perl releases.
=item * Arguments
my $latest = sort_versions( [ values %{$latest_per_version} ] )->[0];
=item * Return Value
=item * Comment
Call last.
=back
=cut
sub sort_versions {
( run in 1.032 second using v1.01-cache-2.11-cpan-b16cb0d3907 )