NAME

Pcore::Core::CLI

SYNOPSIS

# redirect CLI processing
sub CLI ($self) {
    return 'Other::Class';
}

# CLI commands hub
sub CLI {
    return ['Cmd1', 'Cmd2', 'Cmd::Modules::' ];
}

# or
sub CLI {
    return {
        abstract => 'Abstract description',
        help     => <<'HELP',
Full CLI help
HELP
        cmd      => ['Cmd1', 'Cmd2', 'Cmd::Modules::' ],
    };
}

# CLI command class
extends qw[Pcore::Core::CLI::Cmd];

sub CLI ($self) {
    return {
        name     => 'command',
        abstract => 'abstract desc',
        help     => undef,
        opt      => {},
        arg      => {},
    };
}

sub CLI_VALIDATE ( $self, $opt, $arg, $rest ) {
    return;
}

sub CLI_RUN ( $self, $opt, $arg, $rest ) {
    return;
}

DESCRIPTION

CLI class can be either a CLI "commands hub" or "command". Command hub - only keep other CLI commands together, it doesn't do anything else. CLI command must be a instance of Pcore::Core::CLI::Cmd role.

METHODS

CLI ($self)

Return CLI specification as Str, ArrayRef of HashRef. Str - name of class to redirect CLI processor to. ArrayRef - list of CLI commands classes or namespaces. HashRef - full CLI specification, where supported keys are:

  • cmd - CLI commands classes names or namespace. Namespace should be specified with '::' at the end, eg.: 'My::CLI::Packages::'. cmd can be Str or ArrayRef[Str];

  • abstract - short description;

  • help - full help, can be multiline string;

  • name - CLI command name, can be a Str or ArrayRef[Str], if command has aliases. If command name is not specified - if will be parsed from the last segment of the class name;

  • opt - HashRef, options specification;

  • arg - ArrayRef, arguments specification;

CLI_VALIDATE ( $self, $opt, $arg, $rest )

Should validate parsed CLI data and return Str in case of error or undef.

CLI_RUN ( $self, $opt, $arg, $rest )

SEE ALSO