nlu
Version:
Use this package to link your projects together for local development.
67 lines (66 loc) • 2.96 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = require("chalk");
const dashdash = require('dashdash');
const cmd_line_opts_1 = require("./cmd-line-opts");
const logging_1 = require("../../logging");
const npmLinkUpPkg = require('../../../package.json');
const residence = require("residence");
const cwd = process.cwd();
const root = residence.findProjectRoot(cwd);
const cmd_line_opts_2 = require("../add/cmd-line-opts");
const cmd_line_opts_3 = require("../init/cmd-line-opts");
const cmd_line_opts_4 = require("../run/cmd-line-opts");
process.once('exit', code => {
logging_1.default.info('Exiting with code:', code, '\n');
});
if (!root) {
logging_1.default.error('Cannot find a project root given your current working directory:', chalk_1.default.magenta(cwd));
logging_1.default.error(' => NLU could not find a package.json file within your cwd.');
process.exit(1);
}
const commands = [
'nlu run',
'nlu init',
'nlu add'
];
const allowUnknown = process.argv.indexOf('--allow-unknown') > 0;
let opts, parser = dashdash.createParser({ options: cmd_line_opts_1.default, allowUnknown });
try {
opts = parser.parse(process.argv);
}
catch (e) {
logging_1.default.error(chalk_1.default.magenta(' => CLI parsing error:'), chalk_1.default.magentaBright.bold(e.message));
logging_1.default.warn(chalk_1.default.gray('Perhaps you meant to use on of these commands instead:', chalk_1.default.gray.bold(commands.join(', '))));
process.exit(1);
}
if (opts.version) {
console.log(npmLinkUpPkg.version);
process.exit(0);
}
if (opts.help) {
let help = parser.help({ includeEnv: true }).trimRight();
console.log('usage: nlu [OPTIONS]\n' + 'options:\n' + help);
console.log();
logging_1.default.info('To get help for "nlu init", use:', chalk_1.default.blueBright.bold('nlu init --help'));
logging_1.default.info('To get help for "nlu run", use:', chalk_1.default.blueBright.bold('nlu run --help'));
logging_1.default.info('To get help for "nlu run", use:', chalk_1.default.blueBright.bold('nlu add --help'));
logging_1.default.info('Etc.');
process.exit(0);
}
const flattenDeep = function (arr1) {
return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
};
if (opts.bash_completion) {
const allOpts = flattenDeep([cmd_line_opts_2.default, cmd_line_opts_3.default, cmd_line_opts_4.default, cmd_line_opts_1.default]);
let generatedBashCode = dashdash.bashCompletionFromOptions({
name: 'nlu',
options: allOpts,
includeHidden: false
});
console.log(generatedBashCode);
process.exit(0);
}
logging_1.default.warn(chalk_1.default.bold.italic('No command line option was recognized.'));
logging_1.default.warn(chalk_1.default.gray('Perhaps you meant to use one of these commands instead:', chalk_1.default.gray.bold(commands.join(', '))));
process.exit(1);