NAME
App::sync_cpantesters - Sync CPAN testers failure reports to local directories
VERSION
version 1.111470
SYNOPSIS
$ sync_cpantesters -a MARCEL -d ~/dev/cpan-testers
DESCRIPTION
CPAN testers provide a valuable service. The reports are available on the Web - for example, for CPAN ID MARCEL
, the reports are at 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 --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
...
METHODS
author
The CPAN ID for which you want to download CPAN testers results. In my case, this id is MARCEL
.
You have to use exactly one of author()
or uri()
.
uri
The URI from which to download the CPAN testers results. It needs to be in the same format as, say, 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 file://
URI.
You have to use exactly one of author()
or uri()
.
dir
The directory you want to download the reports to. Mandatory argument; does tilde expansion during run()
.
ignore
If this argument is given, then, during 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.
verbose
Be more verbose.
run
The main method, which is called by the sync_cpantesters
program. Call this after you've set the relevant accessors described above.
You can add a trigger to this class to filter distributions after they have been scraped from the web page and before the individual reports are being downloaded. See "TRIGGERS" below.
get
Takes a URL, downloads and returns the contents. A progress bar is displayed during the download.
log
Takes arguments like sprintf
and prints them only if verbose()
is true. The string will have exactly one newline character at the end.
TRIGGERS
This class supports a trigger in the style of Class::Trigger.
- dist.filter
-
This trigger is called after the data has been scraped from the web page but before the individual testing reports are being downloaded. The trigger is given an array reference to the distributions; each element is a hash that contains the distribution name as well as a list of the failure reports.
For example, suppose you keep the currently maintained distributions in a directory and the deprecated ones, the ones you won't support anymore, in another directory. Then you might want to download only those reports for distributions you maintain. Use something like this:
use App::sync_cpantesters; App::sync_cpantesters->add_trigger( 'dist.filter' => sub { my ($class, $dist) = @_; @$dist = grep { -d "$ENV{HOME}/code/$_->{name}" } @$dist; } ); App::sync_cpantesters->new( author => 'MARCEL', base_dir => '~/dev/cpan-testers', verbose => 1, )->run;
INSTALLATION
See perlmodinstall for information and options on installing Perl modules.
BUGS AND LIMITATIONS
No bugs have been reported.
Please report any bugs or feature requests through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=App-sync_cpantesters.
AVAILABILITY
The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit http://www.perl.com/CPAN/ to find a CPAN site near you, or see http://search.cpan.org/dist/App-sync_cpantesters/.
The development version lives at http://github.com/hanekomu/App-sync_cpantesters and may be cloned from git://github.com/hanekomu/App-sync_cpantesters.git. Instead of sending patches, please fork this project using the standard git and github infrastructure.
AUTHOR
Marcel Gruenauer <marcel@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2007 by Marcel Gruenauer.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.