| #!/usr/bin/env node |
| |
| var nopt = require('nopt'); |
| var log = require('npmlog'); |
| var xtend = require('xtend'); |
| var pkg = require('../package.json'); |
| var osenv = require('osenv'); |
| var fs = require('fs'); |
| var path = require('path'); |
| |
| var nmo = require('../lib/nmo.js').default; |
| var parsed = nopt({ |
| 'json': [Boolean], |
| 'force': [Boolean], |
| 'delimiter': [String], |
| 'columns': [Boolean] |
| }, {'v': 'v'}, process.argv, 2); |
| |
| var cmd = parsed.argv.remain.shift(); |
| var home = osenv.home(); |
| |
| parsed.nmoconf = home + '/' + '.nmorc'; |
| parsed.cliroot = path.resolve(__dirname, '..'); |
| parsed.name = pkg.name; |
| |
| if (!fs.existsSync(parsed.nmoconf)) { |
| fs.writeFileSync(parsed.nmoconf, ''); |
| } |
| |
| nmo.load(parsed).then(function (conf) { |
| |
| if (!cmd || !nmo.cli[cmd]) { |
| return nmo.cli.help(); |
| } |
| |
| nmo.cli[cmd] |
| .apply(null, parsed.argv.remain) |
| .catch(errorHandler); |
| |
| }).catch(errorHandler); |
| |
| function errorHandler (err) { |
| if (!err) { |
| process.exit(1); |
| } |
| |
| if (err.type === 'EUSAGE') { |
| err.message && log.error(err.message); |
| process.exit(1); |
| } |
| |
| err.message && log.error(err.message); |
| |
| if (err.stack) { |
| log.error('', err.stack); |
| log.error('', ''); |
| log.error('', ''); |
| log.error('', 'nmo:', pkg.version, 'node:', process.version); |
| log.error('', 'please open an issue including this log on ' + pkg.bugs.url); |
| } |
| process.exit(1); |
| } |
| |
| |
| // ______ . |
| // / o \ /| |
| // \ ͜ | | |
| // \_____ / \| |
| // ‘ |