Dist::Zilla::Plugin::EnsurePrereqsInstalled - Ensure at build time that all prereqs, including developer, are satisfied
version 0.009
In your dist.ini:
[EnsurePrereqsInstalled]
This is a Dist::Zilla plugin that verifies, during the dzil build process, that all required prerequisites are satisfied, including developer prereqs. If any prerequisites are missing, the build is aborted.
dzil build
Authordeps (developer prerequisites that can be extracted directly from dist.ini) are always checked at the start of the build. This would be equivalent to calling dzil authordeps --missing.
dzil authordeps --missing
All prerequisites are fetched from the distribution near the end of the build and a final validation check is performed at that time (unless build_phase is release, in which case the check is delayed until just prior to performing the release).
build_phase
release
Only 'requires', 'conflicts' and 'x_breaks' prerequisites are checked (by default); other types (e.g. 'recommends' and 'suggests' are ignored).
All prerequisite phases are checked: configure, build, test, runtime, develop (and any custom x_ keys that may also be present, given adequate toolchain support).
This plugin was written for a distribution that does some fiddly work during file munging time that required the installation of a module, specified as an ; authordep Module::Name in dist.ini. When the module is missing, an ugly exception is printed, without a clear explanation that this module was a developer prerequisite that ought to have been installed first.
; authordep Module::Name
It is this author's opinion that this check ought to be performed by Dist::Zilla itself, rather than leaving it to an optional plugin.
[EnsurePrereqsInstalled] type = requires type = recommends
Indicate what relationship type(s) of prereqs are checked (such as requires, recommends, suggests). Defaults to 'requires'; can be used more than once. (Note that 'conflicts' and 'x_breaks' prereqs are always checked and this cannot be disabled.)
[EnsurePrereqsInstalled] build_phase = release
Indicates what Dist::Zilla phase to perform the check at - either build (default) or release.
...if anyone has an interest:
option to exclude modules from being checked
option to prompt to continue instead of dying on unsatisfied prereqs
option for different treatment (warn? prompt?) for recommended, suggested prereqs
These plugins all do somewhat similar and overlapping things, but are all useful in their own way:
"Prereq Spec" in CPAN::Meta::Spec
Dist::Zilla::Plugin::PromptIfStale
Dist::Zilla::Plugin::CheckPrereqsIndexed
Dist::Zilla::Plugin::Test::ReportPrereqs
Dist::Zilla::Plugin::Test::CheckDeps
Dist::Zilla::Plugin::Test::CheckBreaks
Bugs may be submitted through the RT bug tracker (or bug-Dist-Zilla-Plugin-EnsurePrereqsInstalled@rt.cpan.org).
There is also a mailing list available for users of this distribution, at http://dzil.org/#mailing-list.
There is also an irc channel available for users of this distribution, at #distzilla on irc.perl.org.
#distzilla
irc.perl.org
I am also usually active on irc, as 'ether' at irc.perl.org.
Karen Etheridge <ether@cpan.org>
This software is copyright (c) 2014 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Dist::Zilla::Plugin::EnsurePrereqsInstalled, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Dist::Zilla::Plugin::EnsurePrereqsInstalled
CPAN shell
perl -MCPAN -e shell install Dist::Zilla::Plugin::EnsurePrereqsInstalled
For more information on module installation, please visit the detailed CPAN module installation guide.