NAME
Dist::Zilla::Plugin::if - Load a plugin only if a condition is true
VERSION
version 0.002002
SYNOPSIS
[if / FooLoader]
dz_plugin = Git::Contributors
dz_plugin_name = KNL/Git::Contributors
dz_plugin_minversion = 0.010
?= -e $root . '.git'
?= -e $root . '.git/config'
>= include_authors = 1
>= include_releaser = 0
>= order_by = name
DESCRIPTION
if
is intended to be a similar utility to perl if
.
It will execute all of condition
in turn, and only when all return true, will the plugin be added to Dist::Zilla
METHODS
mvp_aliases
dz_plugin_arguments=
can be written as>=
ordz_plugin_argument=
conditions=
can be written as?=
orcondition=
mvp_multivalue_args
All of the following support multiple declaration:
dz_plugin_arguments
prereq_to
conditions
register_prereqs
By default, registers "dz_plugin_package" version "dz_plugin_minimumversion" as develop.requires
( as per "prereq_to" ).
check_conditions
Compiles conditions
into a single sub and executes it.
conditions = y and foo
conditions = x blah
Compiles as
sub { y and foo and x blah and 1 }
But with $root
and $zilla
in scope.
ATTRIBUTES
dz_plugin
REQUIRED
The plugin
identifier.
For instance, [GatherDir / Foo]
and [GatherDir]
approximation would both set this field to
dz_plugin => 'GatherDir'
dz_plugin_name
The "Name" for the plugin
.
For instance, [GatherDir / Foo]
would set this value as
dz_plugin_name => "Foo"
and [GatherDir]
approximation would both set this field to
dz_plugin_name => "Foo"
In Dist::Zilla
, [GatherDir]
is equivalent to [GatherDir / GatherDir]
.
Likewise, if you do not specify dz_plugin_name
, the value of dz_plugin
will be used.
dz_plugin_minversion
The minimum version of dz_plugin
to use.
At present, this ONLY affects prereq
generation.
conditions
A mvp_multivalue_arg
attribute that creates an array of conditions that must all evaluate to true for the dz_plugin
to be injected.
These values are internally simply joined with and
and executed in an Eval::Closure
Two variables are defined in scope for your convenience:
$zilla
- The Dist::Zilla builder object itself$root
- The same as$zilla->root
only more convenient.
For added convenience, this attribute has an alias of '?' ( mnemonic "Test" ), so the following are equivalent:
[if]
dz_plugin_name = Foo
?= exists $ENV{loadfoo}
?= !!$ENV{loadfoo}
[if]
dz_plugin_name = Foo
condition = exists $ENV{loadfoo}
condition = !!$ENV{loadfoo}
[if]
dz_plugin_name = Foo
conditions = exists $ENV{loadfoo}
conditions = !!$ENV{loadfoo}
dz_plugin_arguments
A mvp_multivalue_arg
attribute that creates an array of arguments to pass on to the created plugin.
For convenience, this attribute has an alias of '>' ( mnemonic "Forward" ), so that the following example:
[GatherDir]
include_dotfiles = 1
exclude_file = bad
exclude_file = bad2
Would be written
[if]
dz_plugin = GatherDir
?= $ENV{dogatherdir}
>= include_dotfiles = 1
>= exclude_file = bad
>= exclude_file = bad2
Or in crazy long form
[if]
dz_plugin = GatherDir
condtion = $ENV{dogatherdir}
dz_plugin_argument = include_dotfiles = 1
dz_plugin_argument = exclude_file = bad
dz_plugin_argument = exclude_file = bad2
prereq_to
This determines where dependencies get injected.
Default is:
develop.requires
And a special value
none
Prevents dependency injection.
This attribute may be specified multiple times.
dz_plugin_package
This is an implementation detail which returns the expanded name of dz_plugin
You could probably find some evil use for this, but I doubt it.
AUTHOR
Kent Fredric <kentnl@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 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.