NAME
CPAN::Local - Hack custom CPAN repos
VERSION
version 0.009
DESCRIPTION
CPAN::Local is a framework for creating custom CPAN implementations. The individual tasks related to mirror management are handled by separate plugins, and those plugins can be combined to achieve the desired behavior, or new ones can be written where further customizations is needed.
There are other libraries for managing a local CPAN mirror, but while all of them focus on functionality, CPAN::Local focuses entirely on extensibility. It is insipered by Dist::Zilla and attempts to provide sufficient flexibility to acommodate the strangest of needs.
This document describes the CPAN::Local
class, which represents a local repository with plugins configured to perform actions on it.
ATTRIBUTES
config_filename
Base name of the configuration file. Default is cpanlocal
.
config
A Config::MVP::Sequence representing the mirror configuration. Normally generated by reading the configuration file (see "config_filename").
root_namespace
The root namespaces for plugins and roles that will be loaded. Default is CPAN::Local
.
distribution_base_class
The base class for distribution objects. Default is CPAN::Local::Distribution
.
root
The root directory of the repository. Assumes the current working directory by default.
logger
Logging facility. An instance of Log::Dispatchouli by default.
plugins
All plugins requested by the "config", required and instantiated.
METHODS
plugins_with($role_name)
Returns all plugins that implement a given role. Only the last portion of the role name should be passed as an argument - i.e. if $role_name
is Index
, then all plugins implementing CPAN::Local::Role::Index
will be returned.
SEE ALSO
Other libraries for building private CPANs
Useful modules for plugin authors
Index files
- CPAN::Index::API
-
Read and write 00whois.xml, 01mailrc.txt, 02packages.details.txt, and 03modlist.data
- PAUSE::Permissions
-
Read 06perms.txt
- CPAN::Indexer::Mirror
-
Write mirror.yml and mirror.json
- File::Rsync::Mirror::Recentfile
-
Read and write RECENT-XX.json files
- Parse::CPAN::MirroredBy
-
Read MIRRORED.BY
- Parse::CPAN::Distributions
-
Read find-ls
- CPAN::Checksums
-
Read and write checksums
Populating a repository
- CPAN::Inject - Add a distribution tarball to a local mirror
- CPAN::Cache - Mirror a file from a remote repo
Distribution metadata
- CPAN::DistnameInfo
-
Parse a distribution filename
- Dist::Metadata
-
Read a distribution META file
- CPAN::ParseDistribution
-
Use regular expressions to find distribution name, version, and provided packages
- Perl::PrereqScanner
-
Use PPI to find a distribution's dependencies
- Module::Depends::Intrusive
-
Execute Makefile.PL/Build.PL to find a distribution's dependencies
Testing
- CPAN::Faker - Build a dummy repo for testing
- CPAN::Faker::HTTPD - Build a dummy repo and serve it over http
Miscellaneous
- CPAN::Visitor - Traverse distributions in a repo
AUTHOR
Peter Shangov <pshangov@yahoo.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Venda, Inc..
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.