debug CLI: parse args properly

This commit is contained in:
Jannis R 2019-07-04 18:50:11 +02:00 committed by Jannis Redmann
parent 036d0cdca8
commit c6de12a707
2 changed files with 34 additions and 4 deletions

View file

@ -3,7 +3,6 @@
const mri = require('mri') const mri = require('mri')
const {join} = require('path') const {join} = require('path')
const {to: fromCli} = require('cli-native')
const createClient = require('..') const createClient = require('..')
const showError = (err) => { const showError = (err) => {
@ -11,13 +10,45 @@ const showError = (err) => {
process.exit(1) process.exit(1)
} }
const toString = val => val + ''
const parseJSON = val => JSON.parse(val)
const parseArgs = [
['departures', 0, toString],
['departures', 1, parseJSON],
['arrivals', 0, toString],
['arrivals', 1, parseJSON],
['journeys', 0, toString],
['journeys', 1, toString],
['journeys', 2, parseJSON],
['refreshJourney', 0, toString],
['refreshJourney', 1, parseJSON],
['locations', 0, toString],
['locations', 1, parseJSON],
['stop', 0, toString],
['stop', 1, parseJSON],
['nearby', 0, parseJSON],
['nearby', 1, parseJSON],
['trip', 0, toString],
['trip', 1, toString],
['trip', 2, parseJSON],
['radar', 0, parseJSON],
['radar', 1, parseJSON],
['reachableFrom', 0, parseJSON],
['reachableFrom', 1, parseJSON]
]
const argv = mri(process.argv.slice(2)) const argv = mri(process.argv.slice(2))
const profile = require(join('../p', argv._[0])) const profile = require(join('../p', argv._[0]))
const client = createClient(profile, 'hafas-client debug CLI') const client = createClient(profile, 'hafas-client debug CLI')
const fn = client[argv._[1]] const fnName = argv._[1]
const args = argv._.slice(2).map(arg => fromCli(arg)) const fn = client[fnName]
const args = argv._.slice(2).map((arg, i) => {
const parser = parseArgs.find(([_fnName, _i]) => _fnName === fnName && _i === i)
return parser ? parser[2](arg) : arg
})
fn(...args) fn(...args)
.then((res) => { .then((res) => {

View file

@ -8,7 +8,6 @@
"author": "Jannis R <mail@jannisr.de>", "author": "Jannis R <mail@jannisr.de>",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"cli-native": "^1.0.0",
"mri": "^1.1.4" "mri": "^1.1.4"
} }
} }