Я пишу программу командной строки в NodeJS, где мое текущее мышление заключается в том, что я хотел бы иметь синтаксический анализ аргументов и logi c в index.js
, а затем иметь фактический код в функциях в отдельных файлах.
Проблема, с которой я столкнулся, заключается в том, как записать зависимости аргументов и конфликты. По какой-то причине cmd
никогда не содержит аргументов. Работает только с --help
.
Что я делаю не так? Как я могу внутри коммутатора проверить наличие или отсутствие других аргументов?
'use strict'
const minimist = require('minimist')
module.exports = () => {
const args = minimist(process.argv.slice(2))
let cmd = args._[0] || 'help'
if (args.version || args.v) {
console.log("Version 0.1")
exit
}
if (args.help || args.h) {
const help =
`
Usage: ddparser [OPTION]... [FILE]...
Parses DD toml files and updates a webpage accordingly.
--help Prints this help page
--validate Validates input file [requires --input]
--k1-dry-run Print K1 changes without doing it [requires --input] [conflicts with --k1-commit]
--k1-commit Commit k1 changes to website [requires --k1-token] [conflicts with --k1-dry-run]
--k1-token K1 token [requires --k1-commit]
--input DD toml file to parse [required]
`
console.log(help)
}
// all args below needs content from the toml file to work
// should exit with error if config.toml isn't found
switch (cmd) {
case 'validate':
// error if --input is not specified
// error if any other argument is given
// read config.toml
// read --input toml file
break
case 'k1-dry-run':
// error if --input is not specified
// error if any other argument is given
// run --validate first and error if it fails
// read config.toml
// read --input toml file
break
case 'k1-commit':
// error if --input is not specified
// error if --k1-token is not specified
// run --validate first and error if it fails
// read config.toml
// read --input toml file
break
case 'k1-token':
// error if --input is not specified
// error if --k1-commit is not specified
// this argument is just a dependency for other args
break
default:
console.log('XXX is not a valid argument.')
break
}
}