import { CCliCommand } from './c-cli-command'; import { CCliDescription } from './c-cli-description'; /** Type of {@link CCliCommandGroupOptions.subcommands} */ export declare type CCliSubcommand = CCliCommandGroup | CCliCommand; /** Options for {@link CliCommandGroup} */ export declare type CCliCommandGroupOptions = { /** Name of this command group */ name: string; /** A short description for command-line usage */ description?: CCliDescription; /** If `true`, hide these commands in command-line usage */ hidden?: boolean; /** The {@link ICliCommandGroup`]]s and/or [[`ICliCommand}s in this group */ subcommands: CCliSubcommand[]; }; /** A group of related command-line interface (CLI) commands * * A **@carnesen/cli** CLI organizes the commands as a tree where commands are * the leaves and command groups are the branches. A CLI might not have any * groups i.e. the root of the command tree is a command. * [`curl`](https://curl.se/docs/manpage.html) is an example of a CLI with a * bunch of options but just the one command. * [`npm`](https://docs.npmjs.com/cli/v8/commands) is an example of a CLI with * many subcommands (e.g. `npm install`) and even sub-subcommands (e.g. `npm * config set`). In the parlance of **@carnesen/cli**, the root of the `npm` CLI * is a command group. So is its `config` subcommand whereas `install` and `set` * are commands */ export declare class CCliCommandGroup { private readonly options; protected constructor(options: CCliCommandGroupOptions); get name(): string; get description(): CCliDescription; get hidden(): boolean; get subcommands(): CCliSubcommand[]; /** Factory for {@link CCliCommandGroup}s */ static create(options: CCliCommandGroupOptions): CCliCommandGroup; } //# sourceMappingURL=c-cli-command-group.d.ts.map