#!/usr/bin/perl
use strict;
my ($latest, $want);
if (my $arg = shift) {
if ($arg eq "latest") {
$latest++;
} elsif ($arg =~ /^(-h|--help)$/) {
die "Usage: $0 [version|latest]\n";
} else {
$want = $arg;
}
}
my $cpan = CPAN::Perl::Releases::MetaCPAN->new;
my @releases =
map {
my $name = $_->{name};
$name =~ s/^perl-?//;
my $url = $_->{download_url};
{ name => $name, url => $url };
}
@{$cpan->get};
if ($latest) {
my $numify = sub {
my $name = shift;
if (my ($v1, $v2) = $name =~ /^5\.(\d+)\.(\d+)$/) {
if ($v1 % 2 == 0) {
return 0+sprintf "%03d%03d", $v1, $v2;
}
}
return;
};
my ($latest) =
map { $_->[0] }
sort { $b->[1] <=> $a->[1] }
map { my $n = $numify->($_->{name}); $n ? [$_, $n] : () }
@releases;
print "$latest->{name}\t$latest->{url}\n";
} elsif ($want) {
for my $r (@releases) {
if ($r->{name} eq $want) {
print $r->{url}, "\n";
exit;
}
}
exit 1;
} else {
for my $r (@releases) {
print "$r->{name}\t$r->{url}\n";
}
}
__END__
=head1 NAME
perl-release - show perl tarball urls
=head1 SYNOPSIS
# show all
> perl-release
...
# show specific version
> perl-release 5.14.2
# show latest
> perl-release latest
=cut