App-sync_cpantesters
view release on metacpan or search on metacpan
lib/App/sync_cpantesters.pm view on Meta::CPAN
open my $fh, '>', $filename
or die "can't open $filename for writing: $!\n";
print $fh $formatter->format(
HTML::TreeBuilder->new_from_content($content));
close $fh or die "can't close $filename: $!\n";
$report{file}{$filename}++;
}
}
$self->log('Deleting files other than the current failure reports...');
find(
sub {
if (-d) {
return if /^\.+$/;
return if $report{dir}{$File::Find::name};
$self->log('Deleting directory %s', $File::Find::name);
rmtree($File::Find::name);
$File::Find::prune = 1;
} elsif (-f) {
return if $report{file}{$File::Find::name};
$self->log('Deleting file %s', $File::Find::name);
unlink $File::Find::name;
}
},
$base_dir
);
}
1;
__END__
=pod
=for stopwords uri dir
=for test_synopsis 1;
__END__
=head1 NAME
App::sync_cpantesters - Sync CPAN testers failure reports to local directories
=head1 VERSION
version 1.111470
=head1 SYNOPSIS
$ sync_cpantesters -a MARCEL -d ~/dev/cpan-testers
=head1 DESCRIPTION
CPAN testers provide a valuable service. The reports are available
on the Web - for example, for CPAN ID C<MARCEL>, the reports are at
L<http://cpantesters.perl.org/author/MARCEL.html>. I don't like to
read them in the browser and click on each individual failure report.
I also don't look at the success reports. I'd rather download the
failure reports and read them in my favorite editor, vim. I want to
be able to run this program repeatedly and only download new failure
reports, as well as delete old ones that no longer appear in the
master list - probably because a new version of the distribution in
question was uploaded.
If you are in the same position, then this program might be for you.
You need to pass a base directory using the C<--dir> options. For
each distribution for which there are failure reports, a directory
is created. Each failure report is stored in a file within that
subdirectory. The HTML is converted to plain text. For example, at one
point in time, I ran the program using:
sync_cpantesters -a MARCEL -d reports
and the directory structure created looked like this:
reports/Aspect-0.12/449224
reports/Attribute-Memoize-0.01/39824
reports/Attribute-Memoize-0.01/71010
reports/Attribute-Overload-0.04/700557
reports/Attribute-TieClasses-0.03/700575
reports/Attribute-Util-1.02/455076
reports/Attribute-Util-1.02/475237
reports/Attribute-Util-1.02/477578
reports/Attribute-Util-1.02/485231
reports/Attribute-Util-1.02/489218
...
=head1 METHODS
=head2 author
The CPAN ID for which you want to download CPAN testers results. In my
case, this id is C<MARCEL>.
You have to use exactly one of C<author()> or C<uri()>.
=head2 uri
The URI from which to download the CPAN testers
results. It needs to be in the same format as, say,
L<http://cpantesters.perl.org/author/MARCEL.html>. You might want to
use this option if you've already downloaded the relevant file; in
this case, use a C<file://> URI.
You have to use exactly one of C<author()> or C<uri()>.
=head2 dir
The directory you want to download the reports to. Mandatory argument;
does tilde expansion during C<run()>.
=head2 ignore
If this argument is given, then, during C<run()>, every distribution
whose name matches this regular expression is ignored. You might use
this when you have deprecated distributions that you don't care about
anymore, but the reports are still there.
=head2 verbose
Be more verbose.
( run in 0.631 second using v1.01-cache-2.11-cpan-b16cb0d3907 )