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 )