NAME
CPAN::FindDependencies - find dependencies for modules on the CPAN
SYNOPSIS
use CPAN::FindDependencies;
my @dependencies = CPAN::FindDependencies::finddeps("CPAN");
foreach my $dep (@dependencies) {
print ' ' x $dep->depth();
print $dep->name().' ('.$dep->distribution().")\n";
}
HOW IT WORKS
The module uses the CPAN packages index to map modules to distributions and vice versa, and then fetches distributions' META.yml files from http://search.cpan.org/
to determine pre-requisites. This means that a working interwebnet connection is required.
FUNCTIONS
There is just one function, which is not exported by default although you can make that happen in the usual fashion.
finddeps
Takes a single compulsory parameter, the name of a module (ie Some::Module); and the following optional named parameters:
- nowarnings
-
Warnings about modules where we can't find their META.yml, and so can't divine their pre-requisites, will be suppressed;
- fatalerrors
-
Failure to get a module's dependencies will be a fatal error instead of merely emitting a warning;
- perl
-
Use this version of perl to figure out what's in core. If not specified, it defaults to 5.005. Three part version numbers (eg 5.8.8) are supported but discouraged.
- 02packages
-
The location of CPAN.pm's
02packages.details.txt.gz
file as a URL. To specify a local file, say something likefile:///home/me/minicpan/02packages.details.txt.gz
. This defaults to fetching it from a public CPAN mirror. The file is fetched once, when the module loads. - cachedir
-
A directory to use for caching. It defaults to no caching. Even if caching is turned on, this is only for META.yml files. 02packages is not cached. (This isn't yet implemented)
It returns a list of CPAN::FindDependencies::Dependency objects, whose useful methods are:
- name
-
The module's name
- distribution
-
The distribution containing this module
- depth
-
How deep in the dependency tree this module is
BUGS/WARNINGS/LIMITATIONS
You must have web access to http://search.cpan.org/ and (unless you tell it where else to look for the index) http://www.cpan.org/. If any META.yml files are missing, the distribution's dependencies will not be found and a warning will be spat out.
Startup can be slow, especially if it needs to fetch the index from the interweb.
FEEDBACK
I welcome feedback about my code, including constructive criticism and bug reports. The best bug reports include files that I can add to the test suite, which fail with the current code in CVS and will pass once I've fixed the bug
Feature requests are far more likely to get implemented if you submit a patch yourself.
CVS
http://drhyde.cvs.sourceforge.net/drhyde/perlmodules/CPAN-FindDependencies/
SEE ALSO
http://cpandeps.cantrell.org.uk/
AUTHOR, LICENCE and COPYRIGHT
Copyright 2007 David Cantrell <david@cantrell.org.uk>
This module is free-as-in-speech software, and may be used, distributed, and modified under the same terms as Perl itself.
CONSPIRACY
This module is also free-as-in-mason software.