Commands
Creating a command
.command(name: string, description?: string)
When developing a very simple program, Caporal will implicitly create a Command for you.
program
.argument(/* ... */)
// your action is in fact attached to the program command.
.action(/* ... */)
When writing complex programs, you'll likely want to manage multiple commands. Use the .command() method to specify them:
program
// a first command
.command("my-command", "Optional command description used in help")
.argument(/* ... */)
.action(/* ... */)
// a second command
.command("sec-command", "...")
.option(/* ... */)
.action(/* ... */)
Aliasing
.alias(...aliases: string[])
You can create one or multiple aliases for your command using .alias():
program
.command("install", "My command named `install`")
.alias("i", "setup")
.action(/* ... */)
This command can be called as my-program install, my-program i, and my-program setup.
Default command
.default()
Use .default() to make your command the default one of your program.
program
// the install command is the default command for the program
.command("install", "My command named `install`")
.default()
.action(/* ... */)
// a second command
.command("uninstall", "My command named `uninstall`")
.action(/* ... */)
Running my-program without specifying the command will execute the default install command.
Adding arguments
.argument(synopsis, description, [opts])
| Parameter | Type | Description |
|---|---|---|
synopsis | string | Argument synopsis. Specify <my-arg> for a mandatory argument or [my-arg] for an optional one. |
description | string | Argument description displayed in help. |
opts | Other optional properties | |
opts.validator | Validator | A Validator in charge of validating the value provided by the user. |
opts.default | any | A default value when not provided |
Argument synopsis
An argument synopsis consists of one word, the argument name, enclosed by angled brackets or square brackets. Angled brackets (e.g. <item>) indicate a required argument while square brackets (e.g. [env]) indicate an optional argument.
Variadic arguments
You can specify arguments as being variadic (e.g. repeatable) by suffixing their name by ....
program
// the install command is the default command for the program
.command("install", "My command named `install`")
.argument("<package...>", "Package(s) to install")
.action(({ logger, args }) => {
// args.package is an array
logger.info("Installing %d package(s)", args.package.length)
})
Adding options
.option(synopsis, description, [opts])
| Parameter | Type | Description |
|---|---|---|
synopsis | string | Option synopsis. |
description | string | Option description that will be displayed in help. |
opts | object | Other optional properties |
opts.validator | Validator | Validator to be used. |
opts.default | any | Default value. |
opts.required | boolean | Specify if the option itself is required. Default to false. |
Option synopsis
An option synopsis consists of short and/or long notations plus a potential expected value placeholder. let's take some examples:
-f <file>means that the short option-fhas a mandatory value associated.-f [file]means that the short option-fhas an optional value.-v(without a value placeholder) means the option is a boolean. If-vis provided in the command line, its value will betrue.-f, --file <file>means the option can be provided either by its short notation-for by its long notation--file. You don't have to repeat the placeholder twice in that case.-f <files...>means a variadic option (using...), e.g. the option can be repeated. The resulting value for this option will be an array.
Help
Customizing help
.help(contents: string, opts)
.help() lets you customize the command help. Learn more in the help section of this guide.
Hiding from help
.hide()
Hide your command from help.
program
.command("install", "My command named `install`")
.action(/* ... */)
// This command won't appear in help
.command("uninstall", "My command named `uninstall`")
.hide()
In the example above, running my-program help will only list the install command.
Casting values
.cast(enable: boolean)
By default, Caporal auto-cast arguments and options values like numbers and booleans. You can disable this behavior for a specific command using .cast(false).
program
.command("install", "My command named `install`")
.action(/* ... */)
.command("uninstall", "My command named `uninstall`")
.cast(false)
Strict mode
.strict(enable: boolean)
By default, strict settings are not defined for commands, and inherit from the program settings. Calling .strict(value) on a command will override the program settings.