db-vendo-client/debug-cli/cli.js
2019-08-16 17:57:22 +02:00

57 lines
1.4 KiB
JavaScript
Executable file

#!/usr/bin/env node
'use strict'
const mri = require('mri')
const {join} = require('path')
const createClient = require('..')
const showError = (err) => {
console.error(err)
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 profile = require(join('../p', argv._[0]))
const client = createClient(profile, 'hafas-client debug CLI')
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
})
fn(...args)
.then((res) => {
process.stdout.write(JSON.stringify(res) + '\n')
})
.catch(showError)