UNPKG

pimatic

Version:

A home automation server and framework for the Raspberry PI running on node.js

53 lines (41 loc) 1.39 kB
#!/usr/bin/env node "use strict"; var program = require("commander"); var chalk = require("chalk"); var fs = require("fs"); var path = require("path"); var rjson = require("../relaxed-json.js"); var pkgJson = JSON.parse(fs.readFileSync(path.join(__dirname, "..", "package.json")).toString()); program.usage("[options] file.js"); program.version(pkgJson.version); program.option("--no-relaxed", "Parse as strict JSON"); program.option("--no-warnings", "Don't emit precise (use JSON.parse)"); program.option("--no-duplicates", "Don't warn on duplicate keys"); function cli(argv) { program.parse(argv); if (program.args.length !== 1) { console.error("Error: input file is required"); console.log(program.help()); return 1; } var opts = { relaxed: program.relaxed, warnings: program.warnings, duplicates: program.duplicates, }; var contents = fs.readFileSync(program.args[0]).toString(); try { var json = rjson.parse(contents, opts); console.log(JSON.stringify(json, null, 2)); } catch (e) { if (e instanceof SyntaxError && typeof e.line === "number") { console.error("Error on line " + e.line + ": " + e.message); console.log(chalk.grey(contents.split(/\n/)[e.line - 1])); } } return 0; } var ret = cli(process.argv); /* eslint-disable no-process-exit */ process.exit(ret); /* eslint-enable no-process-exit */