Alien-pkgconf
view release on metacpan or search on metacpan
script/fetch.pl view on Meta::CPAN
sub extcmp
{
my($a,$b) = @_;
# prefer .gz, then .bz2, finally .xz
my %ext = (
# as of 1.2.1 pkgconf comes as a .gz
# again, meaning we shouldn't need
# Alien::xz anymore.
#xz => 1,
bz2 => 2,
gz => 3,
);
$a =~ s/^.*\.//g;
$b =~ s/^.*\.//g;
($ext{$a} || 0) <=> ($ext{$b} || 0);
}
my $filename;
$url = do {
my @list;
while($res->{content} =~ /\>(pkgconf-([0-9\.]+)\.tar.*)\</g)
{
my $path = $1;
my @version = split /\./, $2;
push @version, 0, 0 if @version == 1;
push @version, 0 if @version == 2;
next if $version[0] >= 2;
next if $version[0] == 1 && $version[1] >= 9;
push @list, [ $path, \@version ];
}
($filename) = reverse
map { $_->[0] }
sort {
vercmp($a->[1], $b->[1]) || extcmp($a->[0], $b->[0]);
} @list;
die "unable to find filename in HTML" unless $filename;
"$url/$filename";
};
print "fetch $url\n";
$res = $ua->get($url);
unless($res->{success})
{
print "error retrieving $url\n";
print STDERR "status = ", $res->{status}, "\n";
print STDERR "reason = ", $res->{reason}, "\n";
exit 2;
}
my $tar_filename = File::Spec->catfile(@{ $dirs[0] }, $filename);
print "write $tar_filename\n";
open my $fh, '>', $tar_filename;
binmode $fh;
print $fh $res->{content};
close $fh;
open $fh, '>', $status_filename;
print $fh encode_json({ filename => $tar_filename });
close $fh;
( run in 0.524 second using v1.01-cache-2.11-cpan-119454b85a5 )