UNPKG

@zowe/imperative

Version:
197 lines 7.95 kB
import { ICommandExampleDefinition } from "./ICommandExampleDefinition"; import { IChainedHandlerEntry } from "./handler/IChainedHandlerEntry"; import { ICommandOptionDefinition } from "./option/ICommandOptionDefinition"; import { ICommandPositionalDefinition } from "./option/ICommandPositionalDefinition"; import { ICommandDefinitionPassOn } from "./ICommandDefinitionPassOn"; import { ICommandProfile } from "../doc/profiles/definition/ICommandProfile"; /** * Command Segment type - either "group" or "command". * * "group" implies no handler and should have children. Use groups to logically arrange portions of your CLI. * "command" implies there is a handler and may or may not have children. */ export type ICommandNodeType = "group" | "command"; export declare const compareCommands: (a: ICommandDefinition, b: ICommandDefinition) => number; /** * Interface describing the syntax and behavior definition of a command * or group of commands */ export interface ICommandDefinition { /** * The command or group name * @type {string} * @memberof ICommandDefinition */ name: string; /** * The description - keep group descriptions "small" and include lengthier descriptions for "commands". * @type {string} * @memberof ICommandDefinition */ description: string; /** * A shorter (~one line) description of your command * @type {string} * @memberof ICommandDefinition */ summary?: string; /** * This documents segment type - either "group" or "command". See the type definition for more detail. * @type {ICommandNodeType} * @memberof ICommandDefinition */ type: ICommandNodeType; /** * Pass on attributes of the current definition node to children * @type {ICommandDefinitionPassOn[]} * @memberof ICommandDefinition */ passOn?: ICommandDefinitionPassOn[]; /** * Aliases - any number of single or more character aliases can be specified. * @type {string[]} * @memberof ICommandDefinition */ aliases?: string[]; /** * If true, stdin will automatically be read before the handler of this command is invoked. * @type {string[]} * @memberof ICommandDefinition */ enableStdin?: boolean; /** * The description for the stdin option - used if enableStdin is true * @type {string} * @memberof ICommandDefinition */ stdinOptionDescription?: string; /** * If this property exists, the command is deprecated. The property value * is a string that identifies the replacement command. It is used in a * deprecation message similar to the following: * This command is deprecated. * Recommended replacement: value_of_deprecatedReplacement_goes_here * * @type {string} * @memberof ICommandDefinition */ deprecatedReplacement?: string; /** * The set of examples displayed in the help for this command. * @type {ICommandExampleDefinition[]} * @memberof ICommandDefinition */ examples?: ICommandExampleDefinition[]; /** * The handler for this command - this is a string literal that is used on the "require" statement to load the * command handler - The handler itself must implement ICommandHandler. A string is used over an actual * instance because we do not want the handler (and its required dependencies) to be loaded before it is issued. * @type {string} * @memberof ICommandDefinition */ handler?: string; /** * Build this command from multiple handlers chained together, remapping the response * to arguments for future handlers in the command. * * Limitations of chained handlers include: * - The syntax of the command for each handler is not validated, since the full definition is not provided * - You can only map arguments from the "data" field of the command response, so whatever you need * to pass to a future handler in the chain must be passed to response.data.setObj * @type {IChainedHandlerEntry[]} * @memberof ICommandDefinition */ chainedHandlers?: IChainedHandlerEntry[]; /** * The Children for this command - used when the type is provider or group. Use the children to build complex * nested syntaxes - however Zowe modules must follow the prescribed command syntax structure for Zowe. * @type {ICommandDefinition[]} * @memberof ICommandDefinition */ children?: ICommandDefinition[]; /** * The options to be exposed on the command. * @type {ICommandOptionDefinition[]} * @memberof ICommandDefinition */ options?: ICommandOptionDefinition[]; /** * The positional arguments to be exposed on the command. * @type {ICommandPositionalDefinition[]} * @memberof ICommandDefinition */ positionals?: ICommandPositionalDefinition[]; /** * Must specify one indicates that you must specify one of the options listed. * @type {string[]} * @memberof ICommandDefinition */ mustSpecifyOne?: string[]; /** * Only one of the listed options can be specified * @type {string[]} * @memberof ICommandDefinition */ onlyOneOf?: string[]; /** * Auto-loading of profile specifications - see the interface definition for more details. * @type {ICommandProfile} * @memberof ICommandDefinition */ profile?: ICommandProfile; /** * The command handlers are passed the definition document for the command. You can place any additional * "custom" definition information here. * @type {any} * @memberof ICommandDefinition */ customize?: any; /** * Is this command experimental? If you set this to true, the command will * be marked with help text indicating that it is experimental. If this command * is of type "group" all descendant commands will be marked experimental * as well. * @type {boolean} * @memberof ICommandDefinition */ experimental?: boolean; /** * Enable output format options (e.g. "--response-format-type"). The output format options are applied to data * that is presented to the handler response format APIs (see IHandlerResponseApi, "format" property). The intent * of of the output format options: * * 1) Simplify the code in a command handler. A "common" use-case for handler output is printing tables (or lists) * of JSON objects/data OR a single JSON response object. * * 2) Passing the data described in (1) to the handler response format API and enabling the format options gives * the user full control over the output format. They can choose to output an array of JSON objects as a table * OR a list of prettified objects. The use can also choose to include table headers and filter fields. The user * can also reduce the output of a table to a single column (or a JSON object to a single property) eliminating * the need to manually code options such as "--only-print-this-one-field" * * See the "ICommandOutputFormat" JSDoc for details on the format types. * * The options enabled: * * --response-format-type [table|list|object|string] * * Allows the user to control the output format of the data. See the "ICommandOutputFormat" interface for details. * * --response-format-filter [array of fields] * * Allows the user to include only the fields specified in the filter array. * * --response-format-header [boolean] * * Allows the user to optionally include the header with a table. * * @type {boolean} * @memberof ICommandDefinition */ outputFormatOptions?: boolean; /** * Index signature */ [key: string]: any; } //# sourceMappingURL=ICommandDefinition.d.ts.map