NAME

Dist::Zilla::Role::PluginLoader - A Plugin that can load others.

VERSION

version 0.001003

WARNINGS

STOP

You probably don't want to use this module. You either want a @PluginBundle, or PluginLoader::Configurable

WHEN YOU WANT THIS MODULE

  • You don't want a plugin bundle

  • You want something harder to understand for people who use your plugin.

  • You EXPRESSLY wish to hide the loaded modules from things like Dist::Zilla::App::Command::bakeini

  • You are loading a single, or handful of modules, all of which are BLATANTLY obvious DIRECTLY in dist.ini, except with some special loading semantics.

ADVICE

  • Do make consuming plugins have to declare the loaded plugin somehow

  • Do make consuming plugins able to directly configure the loaded plugin somehow

  • If at all possible, load at most, one plugin.

  • If at all possible, and you are loading only one plugin, use PluginLoader::Configurable

  • If you have read this far, and you still are considering using this Role, please contact me, kentnl on #distzilla@irc.perl.org, and let me convince you not to.

SYNOPSIS

use Moose;
with 'Dist::Zilla::Role::Plugin', 'Dist::Zilla::Role::PluginLoader';

sub load_plugins {
  my ( $self, $loader ) = @_;
  # Load raw config
  $loader->load    ( 'GatherDir', 'GatherDir-for-FooPlugin',  [ include_dotfiles => 1, key => value,   ... ]);
  # Load using ini style input
  $loader->load_ini( 'GatherDir', 'GatherDir2-for-FooPlugin', [ 'include_dotfiles = 1', 'key = value', ... ]);
}

REQUIRES METHODS

load_plugins

Signature:

void < load_plugins( $self, $loader );

$loader isa Dist::Zilla::Util::PluginLoader;

See Dist::Zilla::Util::PluginLoader for details.

plugin_from_config

Signature:

$object < plugin_from_config( $class, $plugin_name, $args, $section )

$object does Dist::Zilla::Role::Plugin

$class does Dist::Zilla::Role::Plugin

$plugin_name is Str

$args is HashRef

$section isa Config::MVP::Section

Recommended Provider:

with 'Dist::Zilla::Role::Plugin';

Dist::Zilla::Role::Plugin

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.