@zkochan/pnpm
Version:
Fast, disk space efficient package manager
75 lines (65 loc) • 2.04 kB
JavaScript
#!/usr/bin/env node
var minimist = require('minimist')
var ndjson = require('ndjson')
var fs = require('fs')
var csv = require('./')
var argv = minimist(process.argv, {
alias: {
h: 'headers',
v: 'version',
o: 'output',
s: 'separator',
q: 'quote',
e: 'escape'
},
default: {
s: ',',
q: '"',
e: '"'
},
boolean: ['version', 'help']
})
var headers = argv.headers && argv.headers.toString().split(argv.separator)
var filename = argv._[2]
if (argv.version) {
console.log(require('./package').version)
process.exit(0)
}
if (argv.help || (process.stdin.isTTY && !filename)) {
console.error(
'Usage: csv-parser [filename?] [options]\n\n' +
' --headers,-h Explicitly specify csv headers as a comma separated list\n' +
' --output,-o Set output file. Defaults to stdout\n' +
' --separator,-s Set the separator character ("," by default)\n' +
' --quote,-q Set the quote character (\'"\' by default)\n' +
' --escape,-e Set the escape character (defaults to quote value)\n' +
' --strict Require column length match headers length\n' +
' --version,-v Print out the installed version\n' +
' --remove Remove headers from output\n' +
' --help Show this help\n'
)
process.exit(1)
}
var input
var output = (argv.output && argv.output !== '-') ? fs.createWriteStream(argv.output) : process.stdout
var removedHeaders = argv.remove && argv.remove.split(',')
function mapHeaders (name, i) {
return removedHeaders.indexOf(name) === -1 ? name : null
}
if (filename === '-' || !filename) {
input = process.stdin
} else if (fs.existsSync(filename)) {
input = fs.createReadStream(filename)
} else {
console.error('File: %s does not exist', filename)
process.exit(2)
}
input
.pipe(csv({
headers: headers,
separator: argv.separator,
strict: argv.strict,
mapHeaders: argv.remove ? mapHeaders : null
}))
.pipe(ndjson.serialize())
.pipe(output)