arguable
Version:
Usage-first argument parser.
25 lines (24 loc) • 818 B
JavaScript
module.exports = function (process) {
const rescue = require('rescue')
const Arguable = require('./arguable')
process.on('unhandledRejection', require('./rethrow'))
return async function main (f, argv) {
let exitCode = null
try {
exitCode = await f(argv).exit
} catch (error) {
rescue(error, [ Arguable.Error ])
if (error.stdout) {
process.stdout.write(error.stdout)
process.stdout.write('\n')
} else if (error.stderr) {
process.stderr.write(error.stderr)
process.stderr.write('\n')
}
exitCode = error.exitCode
}
if (exitCode != null && typeof exitCode == 'number') {
process.exitCode = exitCode
}
}
}