NAME
XPAN::Query - Query a {CPAN,MiniCPAN,DarkPAN} mirror
VERSION
This document describes version 0.04 of XPAN::Query (from Perl
distribution XPAN-Query), released on 2014-06-06.
SYNOPSIS
use XPAN::Query qw(
list_xpan_packages
list_xpan_modules
list_xpan_dists
list_xpan_authors
);
my $res = list_ubuntu_releases(detail=>1);
# raw data is in $Ubuntu::Releases::data;
DESCRIPTION
XPAN is a term I coined for any repository (directory tree, be it on a
local filesystem or a remote network) that has structure like a CPAN
mirror, specifically having a "modules/02packages.details.txt.gz" file.
This includes a normal CPAN mirror, a MiniCPAN, or a DarkPAN. Currently
it *excludes* BackPAN, because it does not have
"02packages.details.txt.gz", only "authors/id/C/CP/CPANID" directories.
With this module, you can query various things about the repository.
This module fetches "02packages.details.txt.gz" and parses it (caching
it locally for a period of time).
FUNCTIONS
list_xpan_authors(%args) -> any
List authors in {CPAN,MiniCPAN,DarkPAN} mirror.
Arguments ('*' denotes required arguments):
* cache_period => *int* (default: 86400)
* detail => *bool*
If set to true, will return array of records instead of just ID's.
* query => *str*
Search query.
* temp_dir => *str*
* url* => *str*
URL to repository, e.g. '/cpan' or 'http://host/cpan'.
Return value:
list_xpan_dists(%args) -> any
List distributions in {CPAN,MiniCPAN,DarkPAN} mirror.
For simplicity and performance, this module parses distribution names
from tarball filenames mentioned in "02packages.details.txt.gz", so it
is not perfect (some release tarballs, especially older ones, are not
properly named). For more proper way, one needs to read the metadata
file ("*.meta") for each distribution.
Arguments ('*' denotes required arguments):
* author => *str*
Filter by author.
* cache_period => *int* (default: 86400)
* detail => *bool*
If set to true, will return array of records instead of just ID's.
* query => *str*
Search query.
* temp_dir => *str*
* url* => *str*
URL to repository, e.g. '/cpan' or 'http://host/cpan'.
Return value:
list_xpan_modules(%args) -> any
List packages in {CPAN,MiniCPAN,DarkPAN} mirror.
Arguments ('*' denotes required arguments):
* author => *str*
Filter by author.
* cache_period => *int* (default: 86400)
* detail => *bool*
If set to true, will return array of records instead of just ID's.
* dist => *str*
Filter by distribution.
* query => *str*
Search query.
* temp_dir => *str*
* url* => *str*
URL to repository, e.g. '/cpan' or 'http://host/cpan'.
Return value:
list_xpan_packages(%args) -> any
List packages in {CPAN,MiniCPAN,DarkPAN} mirror.
Arguments ('*' denotes required arguments):
* author => *str*
Filter by author.
* cache_period => *int* (default: 86400)
* detail => *bool*
If set to true, will return array of records instead of just ID's.
* dist => *str*
Filter by distribution.
* query => *str*
Search query.
* temp_dir => *str*
* url* => *str*
URL to repository, e.g. '/cpan' or 'http://host/cpan'.
Return value:
SEE ALSO
Parse::CPAN::Packages is a more full-featured and full-fledged module to
parse "02packages.details.txt.gz". The downside is, startup and
performance is slower.
Parse::CPAN::Packages::Fast is created as a more lightweight alternative
to Parse::CPAN::Packages.
PAUSE::Packages also parses "02packages.details.txt.gz", it's just that
the interface is different.
PAUSE::Users parses "authors/00whois.xml". XPAN::Query does not parse
this file, it is currently not generated/downloaded by CPAN::Mini, for
example.
Tangentially related: BackPAN::Index
HOMEPAGE
Please visit the project's homepage at
<https://metacpan.org/release/XPAN-Query>.
SOURCE
Source repository is at <https://github.com/sharyanto/perl-XPAN-Query>.
BUGS
Please report any bugs or feature requests on the bugtracker website
<https://rt.cpan.org/Public/Dist/Display.html?Name=XPAN-Query>
When submitting a bug or request, please include a test-file or a patch
to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.