NAME

MyCPAN::App::DPAN::Reporter::Minimal - Save the minimum information that dpan needs

SYNOPSIS

Use this in the dpan config by specifying it as the reporter class:

# in dpan.config
reporter_class  MyCPAN::App::DPAN::Reporter::Minimal

DESCRIPTION

This class takes the result of examining a distribution and saves only the information that dpan needs to create the PAUSE index files. It's a very small text file with virtually no processing overhead compared to YAML.

Methods

get_reporter

get_reporter sets the reporter key in the notes. The value is a code reference that takes the information collected about a distribution and dumps it as a YAML file.

See MyCPAN::Indexer::Tutorial for details about what get_reporter expects and should do.

If relative_paths_in_report is true, the reports removes the base path up to author/id.

get_report_file_extension

Returns the extension for report files.

get_collator

This Reporter class also implements its Collator since the two are coupled by the report format. It's a wrapper around final_words, which previously did the same thing.

final_words

Runs after all the reporting for all distributions has finished. This creates a CPAN::PackageDetails object and stores it as the package_details notes. It store the list of directories that need fresh CHECKSUMS files in the dirs_needing_checksums note.

The checksums and index file creation are split across two steps so that dpan has a chance to do something between the analysis and their creation.

get_latest_module_reports

Return the list of interesting reports for this indexing run. This re-runs the queuer to get the final list of distributions in dpan_dir (some things might have moved around), gets the reports for

create_index_files

Creates the 02packages.details.txt.gz and 03modlist.txt.gz files. If there is a problem, it logs a fatal message and returns nothing. If everything works, it returns true.

It initially creates the 02packages.details.txt.gz as a temporary file. Before it moves it to its final name, it checks the file with CPAN::PackageDetails::check_file to ensure it is valid. If it isn't, it stops the process.

skip_package( PACKAGE )

Returns true if the indexer should ignore PACKAGE.

By default, this skips the Perl special packages specified by the ignore_packages configuration. By default, ignore packages is:

main
MY
MM
DB
bytes
DynaLoader

To set a different list, configure ignore_packages with a space separated list of packages to ignore:

ignore_packages main Foo Bar::Baz Test

Note that this only ignores those exact packages. You can't configure this with regex or wildcards (yet).

create_package_details

Not yet implemented. Otehr code needs to be refactored and show up here.

create_modlist

If a modules/03modlist.data.gz does not already exist, this creates a placeholder which defines the CPAN::Modulelist package and the method data in that package. The data method returns an empty hash reference.

update_whois

00whois.xml 01mailrc.txt.gz

get_all_authors

Walk the repository and extract all of the actual authors in the repo.

update_01mailrc

Ensure that every PAUSE ID that's in the repository shows up in the authors/01mailrc.txt.gz file. Any new IDs show up with the name from the pause_full_name configuration.

TO DO: offer a way to configure multiple new IDs

update_00whois

Ensure that every PAUSE ID that's in the repository shows up in the authors/00whois.xml file. Any new IDs show up with the name from the pause_full_name configuration.

create_checksums

Creates the CHECKSUMS file that goes in each author directory in CPAN. This is mostly a wrapper around CPAN::Checksums since that already handles updating an entire tree. We just do a little logging.

TO DO

How much time do you have?

SOURCE AVAILABILITY

This code is in Github:

git://github.com/briandfoy/mycpan-app-dpan.git

AUTHOR

brian d foy, <bdfoy@cpan.org>

COPYRIGHT AND LICENSE

Copyright © 2009-2018, brian d foy <bdfoy@cpan.org>. All rights reserved.

You may redistribute this under the terms of the Artistic License 2.0.