Acme-CPANAuthors-BackPAN-OneHundred
view release on metacpan or search on metacpan
Makefile.PL
MANIFEST
META.json
META.yml
README
t/00load.t
t/10cpanauthor.t
t/90podtest.t
t/91podcover.t
t/94metatest.t
t/95changedate.t
t/96metatest.t
examples/update100.pl view on Meta::CPAN
update100.pl - preps the OneHundred module for release, if required.
=head1 SYNOPSIS
perl update100.pl
=head1 DESCRIPTION
Downloads the latest copy of the backpan100.csv file from CPAN Testers
Statistics site. Compares with the previous download, and if there is a change,
takes the module template and inserts the appropriate data ready for the next
release.
=cut
# -------------------------------------
# Library Modules
use CPAN::Changes;
#use Data::Dumper;
use DateTime;
use File::Basename;
use Getopt::Long;
use IO::File;
use Template;
use WWW::Mechanize;
# -------------------------------------
# Variables
my (%options,%old,%new,%tvars,%pause,%changes);
my $changed = 0;
my $max = 4;
my @files = qw(
lib/Acme/CPANAuthors/BackPAN/OneHundred.pm
LICENSE
META.json
META.yml
README
t/10cpanauthor.t
);
examples/update100.pl view on Meta::CPAN
next unless($pause);
$inx++;
$new{$inx} = { count => $cnt, pause => $pause, name => $name };
if($inx == 1) {
$tvars{TOPDOG} = $pause;
$tvars{TOPCAT} = $name;
}
# check whether anything has changed
if(!$pause{$pause}) {
push @{$changes{insert}}, $pause;
$changed = 1;
} elsif($pause{$pause} != $cnt) {
push @{$changes{update}}, $pause;
delete $pause{$pause};
$changed = 1;
} elsif($old{$inx} && ($old{$inx}{name} ne $name || $old{$inx}{pause} ne $pause)) {
delete $pause{$pause};
$changed = 1;
} else {
delete $pause{$pause};
}
$max = length $new{$inx}{pause} if($max < length $new{$inx}{pause});
}
$fh->close;
$tvars{COUNT} = scalar(keys %new);
#print "new=" . Dumper(\%new);
#print "pause=" . Dumper(\%pause);
# counts can go down as well as up
if(scalar(keys %pause)) {
$changed = 1;
push @{$changes{delete}}, $_
for(keys %pause);
}
#print "max=$max, changed=$changed\n";
# bail if nothing has changed
unless($changed) {
print "Nothing has changed, bailing\n";
exit 0;
}
$max = (int($max/4) + 1) * 4 if($max % 4);
$max+=2;
# create lists
for my $inx (sort {$new{$a}{pause} cmp $new{$b}{pause}} keys %new) {
my $pad = $max - length $new{$inx}{pause};
push @{$tvars{LIST1}}, sprintf " '%s'%s=> '%s',", $new{$inx}{pause}, (' ' x $pad), $new{$inx}{name};
examples/update100.pl view on Meta::CPAN
push @{$tvars{LIST2}}, sprintf " %2d. %3d %s%s%s", $cnt++, $new{$inx}{count}, $new{$inx}{pause}, (' ' x $pad), $new{$inx}{name};
}
# calculate copyright
$tvars{COPYRIGHT} = '2014';
my $year = DateTime->now->year;
$tvars{COPYRIGHT} .= "-$year" if($year > 2014);
# calculate version
$file = '../Changes';
my $changes = CPAN::Changes->load( $file );
my @releases = $changes->releases();
my $version = $releases[-1]->{version};
$version += 0.01;
$tvars{VERSION} = sprintf "%.2f", $version;
# update Changes file
my $release = CPAN::Changes::Release->new( version => $tvars{VERSION}, date => DateTime->now->ymd );
for my $group (qw(insert update delete)) {
next unless($changes{$group});
$release->add_changes(
{ group => $groups{$group} },
join(', ',@{$changes{$group}})
);
push @releases, $release;
}
$changes->releases( @releases );
$fh = IO::File->new($file,'w+') or die "Cannot open file [$file]: $!\n";
my $content = $changes->serialize;
my @content = split(/\n/,$content);
$content = '';
for my $line (@content) {
$line =~ s/^([\d.]+)\s+(.*?)$/$1 $2/;
$line =~ s/^\s+(.*?)/ $1/;
$line =~ s/^\s+(.*?)/ - $1/ unless($line =~ /^\s+[\[\-]/);
$content .= "$line\n";
}
print $fh $content;
$fh->close;
( run in 0.631 second using v1.01-cache-2.11-cpan-d06a3f9ecfd )