| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- #!/usr/bin/env node
 
- 'use strict';
 
- /*eslint-disable no-console*/
 
- // stdlib
 
- var fs    = require('fs');
 
- // 3rd-party
 
- var argparse = require('argparse');
 
- // internal
 
- var yaml = require('..');
 
- ////////////////////////////////////////////////////////////////////////////////
 
- var cli = new argparse.ArgumentParser({
 
-   prog:     'js-yaml',
 
-   version:  require('../package.json').version,
 
-   addHelp:  true
 
- });
 
- cli.addArgument([ '-c', '--compact' ], {
 
-   help:   'Display errors in compact mode',
 
-   action: 'storeTrue'
 
- });
 
- // deprecated (not needed after we removed output colors)
 
- // option suppressed, but not completely removed for compatibility
 
- cli.addArgument([ '-j', '--to-json' ], {
 
-   help:   argparse.Const.SUPPRESS,
 
-   dest:   'json',
 
-   action: 'storeTrue'
 
- });
 
- cli.addArgument([ '-t', '--trace' ], {
 
-   help:   'Show stack trace on error',
 
-   action: 'storeTrue'
 
- });
 
- cli.addArgument([ 'file' ], {
 
-   help:   'File to read, utf-8 encoded without BOM',
 
-   nargs:  '?',
 
-   defaultValue: '-'
 
- });
 
- ////////////////////////////////////////////////////////////////////////////////
 
- var options = cli.parseArgs();
 
- ////////////////////////////////////////////////////////////////////////////////
 
- function readFile(filename, encoding, callback) {
 
-   if (options.file === '-') {
 
-     // read from stdin
 
-     var chunks = [];
 
-     process.stdin.on('data', function (chunk) {
 
-       chunks.push(chunk);
 
-     });
 
-     process.stdin.on('end', function () {
 
-       return callback(null, Buffer.concat(chunks).toString(encoding));
 
-     });
 
-   } else {
 
-     fs.readFile(filename, encoding, callback);
 
-   }
 
- }
 
- readFile(options.file, 'utf8', function (error, input) {
 
-   var output, isYaml;
 
-   if (error) {
 
-     if (error.code === 'ENOENT') {
 
-       console.error('File not found: ' + options.file);
 
-       process.exit(2);
 
-     }
 
-     console.error(
 
-       options.trace && error.stack ||
 
-       error.message ||
 
-       String(error));
 
-     process.exit(1);
 
-   }
 
-   try {
 
-     output = JSON.parse(input);
 
-     isYaml = false;
 
-   } catch (err) {
 
-     if (err instanceof SyntaxError) {
 
-       try {
 
-         output = [];
 
-         yaml.loadAll(input, function (doc) { output.push(doc); }, {});
 
-         isYaml = true;
 
-         if (output.length === 0) output = null;
 
-         else if (output.length === 1) output = output[0];
 
-       } catch (e) {
 
-         if (options.trace && err.stack) console.error(e.stack);
 
-         else console.error(e.toString(options.compact));
 
-         process.exit(1);
 
-       }
 
-     } else {
 
-       console.error(
 
-         options.trace && err.stack ||
 
-         err.message ||
 
-         String(err));
 
-       process.exit(1);
 
-     }
 
-   }
 
-   if (isYaml) console.log(JSON.stringify(output, null, '  '));
 
-   else console.log(yaml.dump(output));
 
- });
 
 
  |