UNPKG

pxi

Version:

Small, fast, and magical command-line data processor

39 lines (35 loc) 966 B
module.exports = failEarly => { const handle = handler(failEarly) return pxi => { process.stdin.setEncoding('utf8') process.stdout.on('error', () => process.exit(1)) process.stderr.on('error', () => process.exit(1)) process.stdin .on('data', data => { const {str} = handle(pxi(data, false)) process.stdout.write(str) }) .on('end', () => { const {str} = handle(pxi('', true)) process.stdout.write(str) process.exit(0) }) .on('error', () => process.exit(1)) } } function handler (failEarly) { return obj => { const err = obj.err || [] if (err.length > 0) { const msgs = err.map(({msg, line, info}) => (typeof line !== 'undefined' ? '(Line ' + line + ') ' : '') + msg + (typeof info !== 'undefined' ? ', in ' + info : '') + '\n' ) process.stderr.write(msgs.join('')) if (failEarly) process.exit(1) } return obj } }