42 lines
1.1 KiB
JavaScript
Executable File
42 lines
1.1 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
// cli.js
|
|
// JSON5 command-line interface.
|
|
//
|
|
// This is pretty minimal for now; just supports compiling files via `-c`.
|
|
// TODO More useful functionality, like output path, watch, etc.?
|
|
|
|
var FS = require('fs');
|
|
var JSON5 = require('./json5');
|
|
var Path = require('path');
|
|
|
|
var USAGE = [
|
|
'Usage: json5 -c path/to/file.json5 ...',
|
|
'Compiles JSON5 files into sibling JSON files with the same basenames.',
|
|
].join('\n');
|
|
|
|
// if valid, args look like [node, json5, -c, file1, file2, ...]
|
|
var args = process.argv;
|
|
|
|
if (args.length < 4 || args[2] !== '-c') {
|
|
console.error(USAGE);
|
|
process.exit(1);
|
|
}
|
|
|
|
var cwd = process.cwd();
|
|
var files = args.slice(3);
|
|
|
|
// iterate over each file and convert JSON5 files to JSON:
|
|
files.forEach(function (file) {
|
|
var path = Path.resolve(cwd, file);
|
|
var basename = Path.basename(path, '.json5');
|
|
var dirname = Path.dirname(path);
|
|
|
|
var json5 = FS.readFileSync(path, 'utf8');
|
|
var obj = JSON5.parse(json5);
|
|
var json = JSON.stringify(obj, null, 4); // 4 spaces; TODO configurable?
|
|
|
|
path = Path.join(dirname, basename + '.json');
|
|
FS.writeFileSync(path, json, 'utf8');
|
|
});
|