Buckets:
| 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` | |
| ) | |
| } | |
Xet Storage Details
- Size:
- 3.59 kB
- Xet hash:
- 2d2a6f576a4c0dd383b8ed6630f95778e62d29b236ced87af4b5e0f3163880a2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.