ETOOBUSY 🚀 minimal blogging for the impatient
App::Easer help as (command line) option
TL;DR
App::Easer V2 now can output the
help
even for non-hierarchical applications.
To get help
about a command, App::Easer::V2
provides a help
sub-command out of the box most of the times. The exception is for
leaf commands, which do not have sub-commands.
This is not a big deal with hierarchical applications, because it’s
possible to invoke the help
sub-command of the parent command and pass
the name of the sub-command we need help with:
# print help about `topcmd`
$ topcmd help
# print help about `subcmd` under `topcmd`
$ topcmd help subcmd
On the other hand, for non-hierarchical applications, the only available command is also a leaf and this hinders getting a meaningful, auto-generated help text off the shelf.
In this case, it’s possible to include an option for getting help, like this:
my $app = {
options => [
{
getopt => 'help|h!',
help => 'print help on the command',
},
...
Then, inside the execute
sub, it’s possible to run the help
sub-command explicitly:
sub execute ($self) {
return $self->run_help if $self->config('help');
# ... normal code for "execute"
# ...
}
In addition, it’s also possible to get the text of the full help, e.g. if it needs some additional formatting before being printed out. In the example below this is indented with some spaces before being printed out between two markers:
sub execute ($self) {
if ($self->config('help')) {
say '--- this is some wrapping for the help ---';
print $self->full_help_text =~ s{^}{ }rgmxs;
say '--- end of the help here, and of wrapping too ---';
return 0;
}
# ... normal code for "execute"
# ...
}
Thanks to djerius for pointing out this need!
Now I’ll have to bite the bullet and finally release V2…