package Module::CPANTS::Generator::Backpan; use strict; use File::Find::Rule; use Module::CPANTS::Generator; use base 'Module::CPANTS::Generator'; use vars qw($VERSION); $VERSION = "0.004"; sub generate { my $self = shift; my $cpants = $self->grab_cpants; my $backpan; foreach my $file (sort File::Find::Rule->file() ->in("/home/acme/backpan/BACKPAN")) { $file =~ s{^.+/}{}; next if $file =~ /.readme/; my $newfile = $self->massage($file); # print "$file -> $newfile\n"; $backpan->{$newfile}++; } foreach my $dist (sort grep { -d } <*>) { my $newdist = $self->massage($dist); my $releases = $backpan->{$newdist}; # print "$dist: $releases\n"; $cpants->{cpants}->{$dist}->{releases} = $releases; } $self->save_cpants($cpants); } sub massage { my($self, $file) = @_; $file =~ s/\.tar.gz$//; $file =~ s/\.tgz$//; $file =~ s/\.zip$//; $file =~ s/-(\d|\.)+//; return $file; } 1; __END__ =head1 NAME Module::CPANTS::Generator::Backpan - Generate release information =head1 SYNOPSIS use Module::CPANTS::Generator::Backpan; my $b = Module::CPANTS::Generator::Backpan->new; $b->directory("unpacked"); $b->generate; =head1 DESCRIPTION This module is part of the beta CPANTS project. It scans through a Backpan mirror and generates the number of releases a distribution has made. =head1 AUTHOR Leon Brocard =head1 LICENSE This code is distributed under the same license as Perl.