prettyjson 1.44 KB
#!/usr/bin/env node

var prettyjson = require('../lib/prettyjson');
var fs = require('fs');
var colors = require('colors/safe');
var argv = require('minimist')(process.argv.slice(2));

var options = {
  keysColor: argv.keys || process.env.PRETTYJSON_KEYS,
  dashColor: argv.dash || process.env.PRETTYJSON_DASH,
  defaultIndentation: argv.indent || process.env.PRETTYJSON_INDENT,
  stringColor: argv.string || process.env.PRETTYJSON_STRING,
  numberColor: argv.number || process.env.PRETTYJSON_NUMBER,
  noColor: argv['nocolor'] || process.env.PRETTYJSON_NOCOLOR,
  noAlign: argv['noalign'] || process.env.PRETTYJSON_NOALIGN,
  inlineArrays: argv['inline-arrays'] || process.env.PRETTYJSON_INLINE_ARRAYS
};

var renderInputJson = function(input){
  console.log(prettyjson.renderString(input, options));
};

if (argv._.length) {
  // First parameter is the file to read and parse
  var filename = argv._[0];
  try {
    renderInputJson(fs.readFileSync(filename, 'utf8'));
  } catch (e) {
    console.error(colors.red('Error: ') + 'File \'' + filename + '\' does not exist');
    process.exit(1);
  }
} else {
  // Read input stream

  var streamData = '';

  process.stdin.resume();
  process.stdin.setEncoding('utf8');
  process.stdin.on('data', function (chunk) {
    if (chunk === '\n') {
      renderInputJson(streamData);
      streamData = '';
      return;
    }
    streamData += chunk;
  });
  process.stdin.on('end', function(){
    renderInputJson(streamData);
  });
}