---
name: "MooseX::App::Command"
section: "3pm"
platform: "linux"
package: "libmoosex-app-perl"
version: "1.43-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooseX::App::Command"
---

# MooseX::App::Command(3pm)

Load command class metaclasses

## NAME

MooseX::App::Command - Load command class metaclasses

## SYNOPSIS

```
 package MyApp::SomeCommand;

 use MooseX::App::Command; # Also loads Moose

 option 'testattr' => (
    isa             => 'rw',
    cmd_tags        => [qw(Important! Nice))],
 );

 command_short_description 'This is a short description';
 command_long_description 'This is a much longer description yadda yadda';
 command_usage 'script some_command --testattr 123';
```

## DESCRIPTION

By loading this class into your command classes you import all required symbols, and enable all documentation features such as:

- •

  Parsing command documentation from Pod

- •

  Setting the command documentation manually via `"command_short_description"` and `"command_long_description"`

- •

  Overriding the automated usage header with custom usage from Pod or via `"command_usage"`

- •

  Adding the `"cmd_tags"`, `"cmd_flag"`, `"cmd_aliases"` and `"cmd_type"` attributes to options

## FUNCTIONS

### command\_short\_description

Set the short description. If not set this information will be taken from the Pod NAME or ABSTRACT section. Alternative this will be taken from the DistZilla ABSTRACT tag.

### command\_long\_description

Set the long description. If not set this information will be taken from the Pod DESCRIPTION or OVERVIEW sections.

### command\_usage

Set custom usage. If not set this will be taken from the Pod SYNOPSIS or USAGE section. If those sections are not available, the usage information will be autogenerated.

### command\_strict

```
 command_strict(0); # default
 OR
 command_strict(1);
```

If strict is enabled the program will terminate with an error message if superfluous/unknown positional parameters are supplied. If disabled all extra parameters will be copied to the extra\_argv attribute.

The app\_strict function in the app classes allows one to set this option globally.
