logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

"Commandable::Command" - represent metadata for an invokable command

Accessors

       The following simple methods return metadata fields about the command

   namedescription
          $name = $command->name;
          $desc = $command->description;

       Strings giving the short name (to be used on a commandline), and descriptive text for the command.

   arguments
          @args = $command->arguments;

       A (possibly-empty) list of argument metadata structures.

   options
          %opts = $command->options;

       A (possibly-empty) kvlist of option metadata structures.

   package
          $pkg = $command->package;

       The package name as a plain string.

   code
          $sub = $command->code;

       A CODE reference to the code actually implementing the command.

Argument Specifications

       Each argument specification is given by an object having the following structure:

   namedescription
          $name = $argspec->name;

          $desc = $argspec->description;

       Text strings for the user, used to generate the help text.

   optional
          $bool = $argspec->optional;

       If false, the option is mandatory and an error is raised if no value is provided for it. If true, it is
       optional and if absent an "undef" will passed instead.

   slurpy
          $bool = $argspec->slurpy;

       If true, the argument will be passed as an ARRAY reference containing the entire remaining list of tokens
       provided by the user.

Author

       Paul Evans <leonerd@leonerd.org.uk>

perl v5.40.0                                       2024-09-08                          Commandable::Command(3pm)

Description

       Objects in this class are returned by a Commandable::Finder instance to represent individual commands
       that exist.

Methods

parse_invocationSinceversion0.12 this method has been moved to Commandable::Finder.

Name

       "Commandable::Command" - represent metadata for an invokable command

Option Specifications

       Each option specification is given by an object having the following structure:

   name
          $name = $optspec->name;

       A string giving the primary human-readable name of the option.

   keyname
          $keyname = $optspec->keyname;

       A string giving the name this option will be given in the options hash provided to the command
       subroutine. This is generated from the human-readable name, but hyphens are converted to underscores, to
       make it simpler to use as a hash key in Perl code.

   names
          @names = $optspec->names;

       A list containing the name plus all the aliases this option is known by.

   description
          $desc = $optspec->description;

       A text string containing information for the user, used to generate the help text.

   mode
          $mode = $optspec->mode;

       A string that describes the behaviour of the option.

       "set" options do not expect a value to be suppled by the user, and will store a true value in the options
       hash if present.

       "value" options take a value from the rest of the token, or the next token.

          --opt=value
          --opt value

       "multi_value" options can be supplied more than once; values are pushed into an ARRAY reference which is
       passed in the options hash.

       "inc" options may be supplied more than once; each occurance will increment the stored value by one.

   default
          $val = $optspec->default;

       A value to provide in the options hash if the user did not specify a different one.

   negatable
          $bool = $optspec->negatable;

       If true, also accept a "--no-OPT" option to reset the value of the option to "undef".

   typespecSinceversion0.13 no longer supported.

   matches
          $re = $optspec->matches;

       If defined, gives a precompiled regexp that any user-supplied value must conform to.

       A few shortcuts are provided, which are used if the provided name ends in "=i" (for "integer"), "=u" (for
       "unsigned integer", i.e. non-negative) or "=f" (for "float").

See Also