Dist::Zilla::Role::Bootstrap - Shared logic for bootstrap things.
version 1.001005
For consuming plugins:
use Moose;
with 'Dist::Zilla::Role::Bootstrap';
sub bootstrap {
my $bootstrap_root = $_[0]->_bootstrap_root;
# Do the actual bootstrap work here
$_[0]->_add_inc('./some/path/here');
}
For users of plugins:
[Some::Plugin::Name]
try_built = 0 ; # use / as the root to bootstrap
try_built = 1 ; # try to use /Dist-Name-.*/ instead of /
fallback = 0 ; # don't bootstrap at all if /Dist-Name-.*/ matches != 1 things
fallback = 1 ; # fallback to / if /Dist-Name-.*/ matches != 1 things
This module is a role that aims to be consumed by plugins that want to perform some very early bootstrap operation that may affect the loading environment of successive plugins, especially with regards to plugins that may wish to build with themselves, either by consuming the source tree itself, or by consuming a previous built iteration.
Implementation is quite simple:
-
-
withthis role in your pluginwith 'Dist::Zilla::Role::Bootstrap'
-
-
-
Implement the
bootstrapsub.sub bootstrap { my ( $self ) = @_; }
-
-
-
Optional: Fetch the discovered
bootstaproot via:$self->_bootstap_root
-
-
-
Optional: Load some path into
@INCvia:$self->_add_inc($path)
-
Any user specified bootstrap method will be invoked during plugin_from_config.
This is AFTER ->new, AFTER ->BUILD, and AFTER dzil's internal plugin_from_config steps.
This occurs within the register_component phase of the plug-in loading and configuration.
This also occurs BEFORE Dist::Zilla attaches the plug-in into the plug-in stash.
The name of the distribution.
This value is vivified by asking zilla->name.
Usually this value is populated by dist.ini in the property name
However, occasionally, this value is discovered by a plugin.
In such a case, that plugin cannot be bootstrapped, because that plugin MUST be loaded prior to bootstrap.
This attribute controls how the consuming plugin behaves.
- false (default) : bootstrapping is only done to
PROJECTROOT/lib - true : bootstrap attempts to try
PROJECTROOT/<distname>-<version>/lib
This attribute is for use in conjunction with try_built
false: WhenPROJECTROOT/<distname>-<version>does not exist, don't perform any bootstrappingtrue(default) : WhenPROJECTROOT/<distname>-<version>does not exist, bootstrap toPROJECTROOT/lib
This attribute controls how try_built behaves when multiple directories exist that match PROJECTROOT/<distname>-.*
Two valid options at this time:
mtime(default) : Pick the directory with the most recentmtimeparseversion: Attempt to parse versions on all candidate directories and use the one with the largest version.
Prior to 0.2.0 this property did not exist, and default behavior was to assume 0 Candidates and 2 or more Candidates were the same problem.
Kent Fredric kentnl@cpan.org
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.