NAME¶
Module::Starter::Plugin -- how Module::Starter plugins work
DESCRIPTION¶
This document is a guide to writing plugins for Module::Starter. Currently, as
is evident, it isn't very comprehensive. It should provide enough information
for writing effective plugins, though. After all, Module::Starter's guts are
nice and simple.
"Module::Starter->import"¶
Module::Starter provides an import method, the arguments to which are plugins,
in the order in which they should be loaded. If no plugins are given,
Module::Starter::Simple (and only Module::Starter::Simple) is loaded.
By default, the given modules are required and arranged in an
is-a chain.
That is, Module::Starter subclasses the last plugin given, which subclasses
the second-to-last, up to the first plugin given, which is the base class. If
a plugin provides a "load_plugins" method, however, the remaining
plugins to be loaded are passed to that method, which is responsible for
loading the rest of the plugins.
This architecture suggests two kinds of plugins:
engine plugins¶
An engine is a plugin that stands alone, implementing the public
"create_distro" method and all the functionality required to carry
out that implementation. The only engine included with Module::Starter is
Module::Starter::Simple, and I'm not sure any more will be seen in the wild
any time soon.
plain old plugins¶
Other plugins are designed to subclass an engine and alter its behavior, just as
a normal subclass alters its parent class's. These plugins may add features to
Module::Starter engines, or may just provide general APIs for other plugins to
exploit (like Module::Starter::Plugin::Template.)
The template plugin is a simple example of a plugin that alters an engine to
accept further plugins. Other plugins like template will probably be written
in the near future, and plugins that exploit the API provided by
Module::Starter::Plugin::Template will be available on the CPAN.
AUTHOR¶
Ricardo SIGNES "<rjbs at cpan.org>"
COPYRIGHT¶
Copyright 2005, Ricardo SIGNES. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.