db-vendo-client/tools/debug-cli/cli.js

62 lines
1.5 KiB
JavaScript
Raw Permalink Normal View History

2019-07-02 20:50:33 +02:00
#!/usr/bin/env node
'use strict'
const mri = require('mri')
const {join} = require('path')
2019-07-08 22:46:37 +02:00
const createClient = require('../..')
2019-07-02 20:50:33 +02:00
const showError = (err) => {
console.error(err)
process.exit(1)
}
2019-07-04 18:50:11 +02:00
const toString = val => val + ''
2020-02-03 20:15:47 +01:00
const parseJsObject = val => {
const res = eval(`(${val})`)
return res && 'object' === typeof res ? res : {}
}
2019-07-04 18:50:11 +02:00
const parseArgs = [
['departures', 0, toString],
2020-02-03 20:15:47 +01:00
['departures', 1, parseJsObject],
2019-07-04 18:50:11 +02:00
['arrivals', 0, toString],
2020-02-03 20:15:47 +01:00
['arrivals', 1, parseJsObject],
2019-07-04 18:50:11 +02:00
['journeys', 0, toString],
['journeys', 1, toString],
2020-02-03 20:15:47 +01:00
['journeys', 2, parseJsObject],
2019-07-04 18:50:11 +02:00
['refreshJourney', 0, toString],
2020-02-03 20:15:47 +01:00
['refreshJourney', 1, parseJsObject],
2019-07-04 18:50:11 +02:00
['locations', 0, toString],
2020-02-03 20:15:47 +01:00
['locations', 1, parseJsObject],
2019-07-04 18:50:11 +02:00
['stop', 0, toString],
2020-02-03 20:15:47 +01:00
['stop', 1, parseJsObject],
['nearby', 0, parseJsObject],
['nearby', 1, parseJsObject],
2019-07-04 18:50:11 +02:00
['trip', 0, toString],
['trip', 1, toString],
2020-02-03 20:15:47 +01:00
['trip', 2, parseJsObject],
['radar', 0, parseJsObject],
['radar', 1, parseJsObject],
['reachableFrom', 0, parseJsObject],
['reachableFrom', 1, parseJsObject]
2019-07-04 18:50:11 +02:00
]
2019-07-02 20:50:33 +02:00
const argv = mri(process.argv.slice(2))
2019-07-08 22:46:37 +02:00
const profile = require(join('../../p', argv._[0]))
2019-07-02 20:50:33 +02:00
const client = createClient(profile, 'hafas-client debug CLI')
2019-07-04 18:50:11 +02:00
const fnName = argv._[1]
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
})
2019-07-02 20:50:33 +02:00
fn(...args)
.then((res) => {
process.stdout.write(JSON.stringify(res) + '\n')
})
.catch(showError)