App::Cmd::Setup - helper for setting up App::Cmd classes
App::Cmd::Setup is a helper library, used to set up base classes that will be
used as part of an App::Cmd program. For the most part you should refer to the
tutorial for how you should use this library.
This class is useful in three scenarios:
- when writing your App::Cmd subclass
- Instead of writing:
package MyApp;
use parent 'App::Cmd';
...you can write:
package MyApp;
use App::Cmd::Setup -app;
The benefits of doing this are mostly minor, and relate to
sanity-checking your class. The significant benefit is that this form
allows you to specify plugins, as in:
package MyApp;
use App::Cmd::Setup -app => { plugins => [ 'Prompt' ] };
Plugins are described in App::Cmd::Tutorial and
App::Cmd::Plugin.
- when writing abstract base classes for commands
- That is: when you write a subclass of App::Cmd::Command that is intended
for other commands to use as their base class, you should use
App::Cmd::Setup. For example, if you want all the commands in MyApp to
inherit from MyApp::Command, you may want to write that package like this:
package MyApp::Command;
use App::Cmd::Setup -command;
Do not confuse this with the way you will write specific
commands:
package MyApp::Command::mycmd;
use MyApp -command;
Again, this form mostly performs some validation and setup
behind the scenes for you. You can use
"base" if you prefer.
- when writing App::Cmd plugins
- App::Cmd::Plugin is a mechanism that allows an App::Cmd class to inject
code into all its command classes, providing them with utility routines.
To write a plugin, you must use App::Cmd::Setup. As seen
above, you must also use App::Cmd::Setup to set up your App::Cmd
subclass if you wish to consume plugins.
For more information on writing plugins, see App::Cmd::Manual
and App::Cmd::Plugin.
This module has a long-term perl support period. That means it will not require
a version of perl released fewer than five years ago.
Although it may work on older versions of perl, no guarantee is
made that the minimum required version will not be increased. The version
may be increased for any reason, and there is no promise that patches will
be accepted to lower the minimum required perl.
Ricardo Signes <rjbs@semiotic.systems>
This software is copyright (c) 2021 by Ricardo Signes.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.