Kent Fredric > Dist-Zilla-Role-BundleDeps-0.002004 > Dist::Zilla::Role::BundleDeps

Download:
Dist-Zilla-Role-BundleDeps-0.002004.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.002004   Source  

NAME ^

Dist::Zilla::Role::BundleDeps - Automatically add all plugins in a bundle as dependencies

VERSION ^

version 0.002004

SYNOPSIS ^

    package blahblahblah;
    use Moose;
    ...
    with 'Dist::Zilla::Role::PluginBundle';
    with 'Dist::Zilla::Role::BundleDeps';

Dependencies appear now for all plugins returned.

DESCRIPTION ^

This role attempts to solve the problem of communicating dependencies to META.* from bundles in a different way.

My first attempt was [Prereqs::Plugins], which added all values that are seen in the dist.ini to dependencies.

However, that was inherently limited, as the :version specifier is lost before the plugins appear on $zilla->plugins

This Role however, can see any declarations of :version your bundle advertises, by standing between your bundle_config method and Dist::Zilla

METHODS ^

bundledeps_defaults

This method provides the HashRef of defaults to use for the generated Prereqs section.

Because this role is intended to advertise Plugin Bundle dependencies, and because those dependencies will be "develop" dependencies everywhere other than the bundle itself, our defaults are:

    {
        -phase        => develop,
        -relationship => requires,
    }

These can be overridden when consuming a bundle in dist.ini

    [@Author::MyBundle]
    ; authordep Dist::Zilla::Role::BundleDeps
    bundledeps_phase = runtime
    bundledeps_relationship = requires

LIMITATIONS ^

Self References in develop_requires

If you bundle plugins with your bundle, and use those plugins in the bundle, you'll risk a self-reference problem, which may be solved in a future release of Dist::Zilla.

Until then, you'll need to possibly use [RemovePrereqs] to trim self-references.

Bootstrap problems on Bundles

When using your bundle to ship itself, the use of this role can imply some confusion if the role is not installed, as dzil listdeps will require this role present to work.

It is subsequently recommended to state an explicit AuthorDep in dist.ini to avoid this.

  [Bootstrap::lib]

  [@Author::MyBundle]
  ; authordep Dist::Zilla::Role::BundleDeps
  bundledeps_phase          = runtime
  bundledeps_relationship   = requires

SEE ALSO ^

[BundleInspector]

AUTHOR ^

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2016 by Kent Fredric <kentfredric@gmail.com>.

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

syntax highlighting: