Skip to content

Instantly share code, notes, and snippets.

@schwern
Created November 7, 2012 22:38
Show Gist options
  • Save schwern/4035002 to your computer and use it in GitHub Desktop.
Save schwern/4035002 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
# Hand it something like EVO/Class-MakeMethods-1.01.tar.gz on STDIN
use perl5i::2;
use MetaCPAN::API;
my %Releases;
my @Missing;
my $mcpan = MetaCPAN::API->new;
for my $name (<>) {
chomp $name;
next if $name =~ /^#/;
print "$name... ";
my $dist = $mcpan->fetch("/release/_search?q=name:$name");
my $hits = $dist->{hits}{hits};
my $release;
given( scalar @$hits ) {
when(1) {
$release = hit2release($hits->[0]);
say $release;
}
when(0) {
push @Missing, $name;
say "no release found";
}
default {
say "several releases found";
my $num_hits = @$hits;
for my $idx (1..@$hits) {
say "$idx. ".hit2release($hits->[$idx-1]);
}
print "Choose one: ";
my $choice = <STDIN>;
chomp $choice;
$release = hit2release($hits->[$choice-1]);
}
}
$Releases{$name} = $release if $release;
}
say "Releases found";
for my $name (sort { $a cmp $b } keys %Releases) {
say "$name: $Releases{$name}";
}
say "Releases missing";
for my $missing (@Missing) {
say "$missing:";
}
sub hit2release {
my $hit = shift;
return "$hit->{_source}{author}/$hit->{_source}{archive}";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment