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

CPAN::Mini and CPAN::Mini::Inject
Pinto
OrePAN
CPAN::Site
MyCPAN::App::DPAN

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.