与 commander-js 的强制参数
mandatory arguments with commander-js
我想知道是否可以在 commander 上创建一个如下所示的命令
toggle (on|off) <args...>
其中(on|off)
表示您必须选择其中之一,强制性的。
理想情况下,指挥官应该负责抛出适当的错误和错误消息。
正如@shadowspawn 所说,指挥官不支持这种构造。但是,您可以通过将强制参数作为参数来模拟它并自己进行验证。然后您可以使用 usage 方法覆盖帮助输出。像这样的东西。
const assertOnOff = (str) => {
if (!/^(on|off)$/.test(str)) {
Logger.error('Toggle action must be either `on` or `off`');
process.exit(1);
}
};
const expandJson = str => JSON.stringify(JSON.parse(str), null, 2);
async function start(action, features) {
assertOnOff(action);
// ... do things
}
program.command('toggle <action> <FEATURE_NAME...>')
.description('turns a feature on or off')
.usage('(on|off) <FEATURE_NAME...>')
.action(start);
然后当你这样调用命令时
toggle -h
您将获得此帮助输出
Usage: toggle (on|off) <FEATURE_NAME...>
turns a feature on or off
Options:
-i, --institution [name] Institution name
-h, --help output usage information
我想知道是否可以在 commander 上创建一个如下所示的命令
toggle (on|off) <args...>
其中(on|off)
表示您必须选择其中之一,强制性的。
理想情况下,指挥官应该负责抛出适当的错误和错误消息。
正如@shadowspawn 所说,指挥官不支持这种构造。但是,您可以通过将强制参数作为参数来模拟它并自己进行验证。然后您可以使用 usage 方法覆盖帮助输出。像这样的东西。
const assertOnOff = (str) => {
if (!/^(on|off)$/.test(str)) {
Logger.error('Toggle action must be either `on` or `off`');
process.exit(1);
}
};
const expandJson = str => JSON.stringify(JSON.parse(str), null, 2);
async function start(action, features) {
assertOnOff(action);
// ... do things
}
program.command('toggle <action> <FEATURE_NAME...>')
.description('turns a feature on or off')
.usage('(on|off) <FEATURE_NAME...>')
.action(start);
然后当你这样调用命令时
toggle -h
您将获得此帮助输出
Usage: toggle (on|off) <FEATURE_NAME...>
turns a feature on or off
Options:
-i, --institution [name] Institution name
-h, --help output usage information