NAME

Dist::Zilla::Plugin::Prereqs::Recommend::MatchInstalled - Advertise versions of things you have as soft dependencies

VERSION

version 0.001000

SYNOPSIS

[Prereqs::MatchInstalled] was a good concept, but its application seemed too strong for some things.

This is a variation on the same theme, but instead of upgrading dependencies in-place, it propagates the upgrade to a different relation, to produce a softer dependency map.

Below shows the defaults expanded by hand.

[Prereqs::Recommend::MatchInstalled]
applyto_phase = configure
applyto_phase = runtime
applyto_phase = test
applyto_phase = build
applyto_phase = develop
source_relation = requires
target_relation = recommends

And add these stanzas for example:

modules = Module::Build
modules = Moose

And you have yourself a distribution that won't needlessly increase the dependencies on either, but will add increased dependencies to the recommends phase.

This way, people doing

cpanm YourModule

Get only what they need

While

cpanm --with-recommends YourModule

Will get more recent things upgraded

ATTRIBUTES

applyto_phase

[Prereqs::Recommend::MatchInstalled]
applyto_phase = SOMEPHASE
applyto_phase = SOMEPHASE

This attribute can be specified multiple times.

Valuable values are:

build test runtime configure develop

And those are the default values too.

source_relation

[Prereqs::Recommend::MatchInstalled]
source_relation = requires

This attribute specifies the prerequisites to skim for modules to recommend upgrades on.

Valuable values are:

requires recommends suggests

Lastly:

conflicts

Will probably do something, but I have no idea if that means anything. If you want to conflict with what you've installed with, ... go right ahead.

target_relation

[Prereqs::Recommend::MatchInstalled]
target_relation = recommends

This attribute specifies the relationship type to inject upgrades into.

Valuable values are:

requires recommends suggests

Lastly:

conflicts

Will probably do something, but I have no idea if that means anything. If you want to conflict with what you've installed with, ... go right ahead.

applyto_map

[Prereqs::Recommend::MatchInstalled]
applyto_map = runtime.requires = runtime.recommends

This attribute is the advanced internals of the other attributes, and it exists for insane, advanced, and niché applications.

General format is:

applyto_map = <source_phase>.<source_relation> = <target_phase>.<target_relation>

And you can probably do everything with this.

You could also conceivably emulate [Prereqs::MatchInstalled] in entirety by using this feature excessively.

applyto_map may be declared multiple times.

AUTHOR

Kent Fredric <kentfredric@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 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.