iapyang
2 years ago
3 changed files with 14 additions and 33 deletions
@ -1,44 +1,21 @@ |
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
const yargs = require('yargs/yargs'); |
||||||
|
const { hideBin } = require('yargs/helpers'); |
||||||
|
|
||||||
const workerCmd = require('./worker/cli.worker'); |
const workerCmd = require('./worker/cli.worker'); |
||||||
|
|
||||||
function getArgs (startIndex = 1) { |
const argv = yargs(hideBin(process.argv)).argv; |
||||||
const args = {}; |
|
||||||
process.argv |
|
||||||
.slice(startIndex, process.argv.length) |
|
||||||
.forEach(arg => { |
|
||||||
// long arg
|
|
||||||
if (arg.slice(0, 2) === '--') { |
|
||||||
const longArg = arg.split('='); |
|
||||||
const longArgFlag = longArg[0].slice(2, longArg[0].length); |
|
||||||
const longArgValue = longArg.length > 1 ? longArg[1] : true; |
|
||||||
args[longArgFlag] = longArgValue; |
|
||||||
// flags
|
|
||||||
} else if (arg[0] === '-') { |
|
||||||
const flags = arg.slice(1, arg.length); |
|
||||||
args[flags] = true; |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return args; |
const cmd = argv._[0]; |
||||||
} |
|
||||||
|
|
||||||
const cmds = new Map([ |
const cmds = new Map([ |
||||||
['worker', workerCmd], |
['worker', workerCmd], |
||||||
]); |
]); |
||||||
|
|
||||||
const baseCmd = 'fui-cli'; |
if (!cmd) throw new Error('Command is undefined!'); |
||||||
|
|
||||||
const startIndex = process.argv.findIndex(argv => argv.indexOf(baseCmd) !== -1); |
|
||||||
|
|
||||||
if (startIndex === -1) { |
|
||||||
throw new Error(`Command ${baseCmd} not found in args`); |
|
||||||
} |
|
||||||
|
|
||||||
const cmd = process.argv[startIndex + 1]; |
|
||||||
|
|
||||||
if (cmds.has(cmd)) { |
if (cmds.has(cmd)) { |
||||||
cmds.get(cmd)?.exec(getArgs(startIndex + 2)); |
cmds.get(cmd)?.exec(argv); |
||||||
} else { |
} else { |
||||||
throw new Error(`Command ${cmd} not supported`); |
throw new Error(`Command ${cmd} not supported`); |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue