| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | 
							- #!/usr/bin/env node
 
- const fs = require('fs')
 
- const path = require('path')
 
- const pkg = require('../package.json')
 
- const JSON5 = require('./')
 
- const argv = parseArgs()
 
- if (argv.version) {
 
-     version()
 
- } else if (argv.help) {
 
-     usage()
 
- } else {
 
-     const inFilename = argv.defaults[0]
 
-     let readStream
 
-     if (inFilename) {
 
-         readStream = fs.createReadStream(inFilename)
 
-     } else {
 
-         readStream = process.stdin
 
-     }
 
-     let json5 = ''
 
-     readStream.on('data', data => {
 
-         json5 += data
 
-     })
 
-     readStream.on('end', () => {
 
-         let space
 
-         if (argv.space === 't' || argv.space === 'tab') {
 
-             space = '\t'
 
-         } else {
 
-             space = Number(argv.space)
 
-         }
 
-         let value
 
-         try {
 
-             value = JSON5.parse(json5)
 
-             if (!argv.validate) {
 
-                 const json = JSON.stringify(value, null, space)
 
-                 let writeStream
 
-                 // --convert is for backward compatibility with v0.5.1. If
 
-                 // specified with <file> and not --out-file, then a file with
 
-                 // the same name but with a .json extension will be written.
 
-                 if (argv.convert && inFilename && !argv.outFile) {
 
-                     const parsedFilename = path.parse(inFilename)
 
-                     const outFilename = path.format(
 
-                         Object.assign(
 
-                             parsedFilename,
 
-                             {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'}
 
-                         )
 
-                     )
 
-                     writeStream = fs.createWriteStream(outFilename)
 
-                 } else if (argv.outFile) {
 
-                     writeStream = fs.createWriteStream(argv.outFile)
 
-                 } else {
 
-                     writeStream = process.stdout
 
-                 }
 
-                 writeStream.write(json)
 
-             }
 
-         } catch (err) {
 
-             console.error(err.message)
 
-             process.exit(1)
 
-         }
 
-     })
 
- }
 
- function parseArgs () {
 
-     let convert
 
-     let space
 
-     let validate
 
-     let outFile
 
-     let version
 
-     let help
 
-     const defaults = []
 
-     const args = process.argv.slice(2)
 
-     for (let i = 0; i < args.length; i++) {
 
-         const arg = args[i]
 
-         switch (arg) {
 
-         case '--convert':
 
-         case '-c':
 
-             convert = true
 
-             break
 
-         case '--space':
 
-         case '-s':
 
-             space = args[++i]
 
-             break
 
-         case '--validate':
 
-         case '-v':
 
-             validate = true
 
-             break
 
-         case '--out-file':
 
-         case '-o':
 
-             outFile = args[++i]
 
-             break
 
-         case '--version':
 
-         case '-V':
 
-             version = true
 
-             break
 
-         case '--help':
 
-         case '-h':
 
-             help = true
 
-             break
 
-         default:
 
-             defaults.push(arg)
 
-             break
 
-         }
 
-     }
 
-     return {
 
-         convert,
 
-         space,
 
-         validate,
 
-         outFile,
 
-         version,
 
-         help,
 
-         defaults,
 
-     }
 
- }
 
- function version () {
 
-     console.log(pkg.version)
 
- }
 
- function usage () {
 
-     console.log(
 
-         `
 
-   Usage: json5 [options] <file>
 
-   If <file> is not provided, then STDIN is used.
 
-   Options:
 
-     -s, --space              The number of spaces to indent or 't' for tabs
 
-     -o, --out-file [file]    Output to the specified file, otherwise STDOUT
 
-     -v, --validate           Validate JSON5 but do not output JSON
 
-     -V, --version            Output the version number
 
-     -h, --help               Output usage information`
 
-     )
 
- }
 
 
  |