NAME
Dist::Zilla::Plugin::CheckSelfDependency - Check if your distribution declares a dependency on itself
VERSION
version 0.011
SYNOPSIS
In your dist.ini:
[CheckSelfDependency]
DESCRIPTION
This is a Dist::Zilla plugin that runs in the after build phase, which checks all of your module prerequisites (all phases, all types except develop) to confirm that none of them refer to modules that are provided by this distribution (that is, the metadata declares the module is indexable).
In addition, all modules in the distribution are checked against all module prerequisites (all phases, all types including develop). Thus, it is possible to ship a Dist::Zilla plugin and use (depend on) yourself, but errors such as declaring a dependency on inc::HelperPlugin
are still caught.
While some prereq providers (e.g. [AutoPrereqs]
) do not inject dependencies found internally, there are many plugins that generate code and also inject the prerequisites needed by that code, without regard to whether some of those modules might be provided by your dist. This problem is particularly acute when packaging low-level toolchain distributions.
If such modules are found, the build fails. To remedy the situation, remove the plugin that adds the prerequisite, or remove the prerequisite itself with [RemovePrereqs]
. (Remember that plugin order is significant -- you need to remove the prereq after it has been added.)
CONFIGURATION OPTIONS
finder
This is the name of a FileFinder for finding modules to check. The default value is :InstallModules
; this option can be used more than once.
Other predefined finders are listed in "default_finders" in Dist::Zilla::Role::FileFinderUser. You can define your own with the [FileFinder::ByName] and [FileFinder::Filter] plugins.
SUPPORT
Bugs may be submitted through the RT bug tracker (or bug-Dist-Zilla-Plugin-CheckSelfDependency@rt.cpan.org). I am also usually active on irc, as 'ether' at irc.perl.org
.
AUTHOR
Karen Etheridge <ether@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 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.