NAME Dist::Zilla::Plugin::if - Load a plugin only if a condition is true VERSION version 0.002001 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 ">=" or "dz_plugin_argument=" * "conditions=" can be written as "?=" or "condition=" "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 COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Kent Fredric . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.