DOKK / manpages / debian 12 / libcommandable-perl / Commandable::Finder.3pm.en
Commandable::Finder(3pm) User Contributed Perl Documentation Commandable::Finder(3pm)

"Commandable::Finder" - an interface for discovery of Commandable::Commands

   $finder = $finder->configure( %conf )

Sets configuration options on the finder instance. Returns the finder instance itself, to permit easy chaining.

The following configuration options are recognised:

allow_multiple_commands

If enabled, the "find_and_invoke" method will permit multiple command invocations within a single call.

   @commands = $finder->find_commands

Returns a list of command instances, in no particular order. Each will be an instance of Commandable::Command.

   $command = $finder->find_command( $cmdname )

Returns a command instance of the given name as an instance of Commandable::Command, or "undef" if there is none.

   $result = $finder->find_and_invoke( $cinv )

A convenient wrapper around the common steps of finding a command named after the initial token in a Commandable::Invocation, parsing arguments from it, and invoking the underlying implementation function.

If the "allow_multiple_commands" configuration option is set, it will repeatedly attempt to parse a command name followed by arguments and options while the invocation string is non-empty.

   $result = $finder->find_and_invoke_ARGV()

A further convenience around creating a Commandable::Invocation from the @ARGV array and using that to invoke a command. Often this allows an entire wrapper script to be created in a single line of code:

   exit Commandable::Finder::SOMESUBCLASS->new( ... )
      ->find_and_invoke_ARGV();

The following built-in commands are automatically provided.

   help
   help $commandname

With no arguments, prints a summary table of known command names and their descriptive text.

With a command name argument, prints more descriptive text about that command, additionally detailing the arguments.

Paul Evans <leonerd@leonerd.org.uk>

2023-01-08 perl v5.36.0