Blame view

node_modules/json5/lib/cli.js 1.13 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  #!/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');
  });