@thinql/cli
Version:
Parse ThinQL queries to stdout as ThinQL or JSON AST
72 lines (57 loc) • 1.57 kB
JavaScript
;
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