UNPKG

@thinql/cli

Version:

Parse ThinQL queries to stdout as ThinQL or JSON AST

72 lines (57 loc) 1.57 kB
#!/usr/bin/env node "use strict"; require("source-map-support/register"); var _readline = require("readline"); var _util = require("util"); var _parse = _interopRequireDefault(require("@thinql/parse")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const run = async () => { const [,, ...args] = process.argv; const formatArg = args.find(arg => arg.startsWith('--')); const format = formatArg ? formatArg.substr(2) : null; let input = args.find(arg => !arg.startsWith('--')); if (!input) { input = await (async () => { const rl = (0, _readline.createInterface)({ input: process.stdin, output: process.stdout }); const ask = () => new Promise(resolve => { rl.question('> ', answer => { rl.close(); resolve(answer); }); }); do { const answer = await ask(); if (answer.trim() !== '') { return answer; } } while (true); })(); } const tree = (0, _parse.default)(input); console.log(input); console.log('---'); switch (format) { case 'json': console.log(JSON.stringify(tree.toJSON(), null, 2)); break; case 'query': console.log(tree.toString()); break; case 'inspect': default: console.log((0, _util.inspect)(tree, { compact: false, colors: true, depth: null })); break; } }; run().catch(err => { console.error(err); process.exit(1); }); //# sourceMappingURL=index.js.map