blob: d4865f84f53f0f61510a0beccc819a03720bb21e [file] [log] [blame]
#!/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 \ /|
// \ ͜ | |
// \_____ / \|
// ‘