NAME

Pinto - Curate your own CPAN-like repository

VERSION

version 0.038

SYNOPSIS

See pinto-admin to create and manage a Pinto repository.

See pinto-server to open remote access to a Pinto repository.

See pinto-remote to interact with a remote Pinto repository.

See Pinto::Manual for more information about the Pinto tools.

DESCRIPTION

Pinto is a suite of tools for creating and managing a CPAN-like repository of Perl archives. Pinto is inspired by CPAN::Mini, CPAN::Mini::Inject, and MyCPAN::App::DPAN, but adds a few interesting features:

  • Pinto supports several usage patterns

    With Pinto, you can create a repository to mirror all the latest distributions from another repository. Or you can create a "sparse repository" with just your own private distributions. Or you can create a "project repository" that has all the distributions required for a particular project. Or you can combine any of the above in some way.

  • Pinto supports adding AND removing archives from the repository

    Pinto gives you the power to precisely tune the contents of your repository. So you can be sure that your downstream clients get exactly the stack of dependencies that you want them to have.

  • Pinto can be integrated with your version control system

    Pinto can automatically commit to your version control system whenever the contents of the repository changes. This gives you repeatable and identifiable snapshots of your dependencies, and a mechanism for rollback when things go wrong.

  • Pinto makes it easier to build several local repositories

    Creating new Pinto repositories is easy, and each has its own configuration. So you can have different repositories for each department, or each project, or each version of perl, or each customer, or whatever you want.

  • Pinto can pull archives from multiple remote repositories

    Pinto can mirror or import distributions from multiple sources, so you can create private (or public) networks of repositories that enable separate teams or individuals to collaborate and share distributions.

  • Pinto supports team development

    Pinto is suitable for small to medium-sized development teams, where several developers might contribute new distributions at the same time. Pinto ensures that concurrent users don't step on each other.

  • Pinto has a robust command line interface.

    The pinto-admin and pinto-remote command line tools have options to control every aspect of your Pinto repository. They are well documented and behave in the customary UNIX fashion.

  • Pinto can be extended.

    You can extend Pinto by creating Pinto::Action subclasses to perform new operations on your repository, such as extracting documentation from a distribution, or grepping the source code of several distributions.

In some ways, Pinto is also similar to PAUSE. Both are capable of accepting distributions and constructing a directory structure and index that toolchain clients understand. But there are some important differences:

  • Pinto does not promise to index exactly like PAUSE does

    Over the years, PAUSE has evolved complicated heuristics for dealing with all the different ways that Perl code is written and distributions are organized. Pinto is much less sophisticated, and only aspires to produce an index that is "good enough" for most applications.

  • Pinto does not understand author permissions

    PAUSE has a system of assigning ownership and co-maintenance permission to individuals or groups. But Pinto only has a basic "first-come" system of ownership. The ownership controls are only advisory and can easily be bypassed (see next item below).

  • Pinto is not secure

    PAUSE requires authors to authenticate themselves before they can upload or remove distributions. However, Pinto does not authenticate and permits users masquerade as anybody they want to be. This is actually intentional and designed to encourage collaboration among developers.

METHODS

new_batch( %batch_args )

Prepares this Pinto to run a new batch of Actions. Any prior batch will be discarded.

add_action( $action_name, %action_args )

Constructs the action with the given names and arguments, and adds it to the current batch. You must first call new_batch before you can add any actions. The precise class of the Action will be formed by prepending 'Pinto::Action::' to the action name. See the documentation for the corresponding Action class for a details about the arguments it supports.

run_actions()

Executes all the actions that are currently in the batch for this Pinto. Returns a Pinto::Result object that indicates whether the batch was successful and contains any warning or error messages that might have occurred along the way.

add_logger( $obj )

Convenience method for installing additional endpoints for logging. The object must be an instance of a Log::Dispatch::Output subclass.

BUT WHERE IS THE API?

For now, the Pinto API is private and subject to radical change without notice. Any module documentation you see is purely for my own references. In the meantime, the command line utilities mentioned in the "SYNOPSIS" are your public user interface.

SUPPORT

Perldoc

You can find documentation for this module with the perldoc command.

perldoc Pinto

Websites

The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.

Bugs / Feature Requests

https://github.com/thaljef/Pinto/issues

Source Code

https://github.com/thaljef/Pinto

git clone git://github.com/thaljef/Pinto.git

AUTHOR

Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Imaginative Software Systems.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.