commander
仅需配置即可生成命令行工具,支持
- 默认命令
- 命令参数
- 询问式参数
- 常驻式操作
询问式参数与命令参数的关系
- 询问式参数是普通参数的子集,询问式参数一定可以直接在命令中输入,以确保工具可自动化运行
快速开始
- 创建配置内容
import { Command, IProgram } from '@aiot-toolkit/commander'
const config: IProgram = {
name: 'myTool',
description: 'myTool is ...',
version: '1.0.1',
commandList: [
{
name: 'start',
description: 'start command is ...',
paramList: [
{
name: 'path',
description: 'path is ...',
enableInquirer: true
},
{
name: 'path2',
description: 'path2 is ...',
enableInquirer: true
}
],
action: (option: any) => {
console.log(option)
},
waiter: new PersistentCommand({
description: 'start 的常驻式操作',
options: [
{
key: 'a',
description: 'a 的描述',
action: () => {}
}
]
})
}
]
}
Command.registeProgram(config)
- 执行命令
- 执行
ts-node bin.ts start --path /Documents/temp
- 此时,会询问 path2 的值;输入后,进入 action,输出 option
配置
IProgram
属性 | 描述 | 类型 | 必填 |
---|
name | 工具名称 | string | true |
description | 工具描述 | string | true |
version | 版本号 | string | true |
defaultCommand | 默认命令,无命令名称时,执行此命令 | ICommand | false |
commandList | 命令列表 | ICommand[] | false |
ICommand
属性 | 描述 | 类型 | 必填 |
---|
name | 命令名称 | string | true |
description | 命令描述 | string | true |
argumentList | 无名称参数, tool arg1 arg2 | string[] | false |
paramList | 有名称参数 | ParamType | false |
action | 命令的执行函数,action:(arg1, arg2, options)=>{} | true | |
ParamType
ParamType 分为4类,继承自IParam
IParam
参数基础结构
属性 | 描述 | 类型 | 必填 |
---|
name | 参数名称 | string | true |
description | 参数描述 | string | true |
defaultValue | 默认值 | any | false |
enableInquirer | 是否启用交互式询问 | boolean | false |
1. InputParam
文本式参数,在IParam的基础上,增加
属性 | 描述 | 类型 | 必填 |
---|
type | 固定值 string | 'string' | true |
validate | 校验输入合法性的方法 | Function | false |
2. SelectParam
单选参数,在 IParam 的基础上,增加
属性 | 描述 | 类型 | 必填 |
---|
type | 固定值 select | 'select' | true |
choices | 选项列表 | { value:选项值(必填), name:选项名称(可选), description: 描述(可选) }[] | true |
3. CheckboxParam
多选参数,在SelectParam 基础上,修改
属性 | 描述 | 类型 | 必填 |
---|
type | 固定值 checkbox | 'checkbox' | true |
4. ConfirmParam
boolean 参数,在 IParam 的基础上,增加
属性 | 描述 | 类型 | 必填 |
---|
type | 固定值 confirm | 'confirm' | true |
waiter
属性 | 描述 | 类型 | 必填 |
---|
description | 常驻命令描述 | string | true |
options | 常驻命令列表 | IPersistentCommandItem[] | true |
IPersistentCommandItem
属性 | 描述 | 类型 | 必填 |
---|
key | 按键,只能是一个字符 | string | true |
description | 描述 | string | true |
action | 按键执行的方法 | () => Promise, ()=>void | true |