diff --git a/tools/highest-endpoint-version/cli.js b/tools/highest-endpoint-version/cli.js new file mode 100755 index 00000000..4388526a --- /dev/null +++ b/tools/highest-endpoint-version/cli.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node +'use strict' + +const mri = require('mri') + +const argv = mri(process.argv.slice(2), { + boolean: [ + 'help', 'h', + 'silent', 's', + ] +}) + +if (argv.help || argv.h) { + process.stdout.write(` +Usage: + highest-endpoint-version +Options: + --silent -s Output just the version instead of a pretty + represenation. +Examples: + highest-endpoint-version oebb +\n`) + process.exit(0) +} + +const {join} = require('path') +const createClient = require('../..') + +const profile = require(join(__dirname, '..', '..', 'p', argv._[0])) +const id = (ctx, val) => val +const origTransformReqBody = profile.transformReqBody || id + +const checkWithVersion = async (version) => { + const transformReqBody = (ctx, body) => { + body = origTransformReqBody(ctx, body) + return {...body, ver: version} + } + const client = createClient({ + ...profile, transformReqBody + }, 'hafas-client-highest-endpoint-version') + + try { + await client.locations('foo', {results: 1}) + } catch (err) { + if (err && err.code === 'VERSION') return false + const wrapped = new Error(`check for ${version} support failed with an unknown error`) + wrapped.originalError = err + throw wrapped + } + return true +} + +const silent = argv.silent || argv.s + +;(async () => { + for (let minor = 16; minor <= 35; minor++) { + const v = '1.' + minor + if (await checkWithVersion(v)) { + if (!silent) console.log(v + ' is supported ✔︎') + } else { + if (silent) console.log(v) + else console.log(v + ' is not supported ✘') + process.exit(0) + } + } + process.exit(1) +})() +.catch((err) => { + console.error(err) + process.exit(1) +}) diff --git a/tools/highest-endpoint-version/package.json b/tools/highest-endpoint-version/package.json new file mode 100644 index 00000000..fc2f8227 --- /dev/null +++ b/tools/highest-endpoint-version/package.json @@ -0,0 +1,13 @@ +{ + "private": true, + "name": "find-highest-endpoint-version", + "version": "1.0.0", + "bin": { + "hafas-client-find-highest-endpoint-version": "./cli.js" + }, + "author": "Jannis R ", + "license": "ISC", + "dependencies": { + "mri": "^1.1.4" + } +}