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.

