UNPKG

@rnv/cli

Version:
114 lines 5.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeRnv = exports.run = void 0; var tslib_1 = require("tslib"); var commander_1 = require("commander"); var fs_1 = tslib_1.__importDefault(require("fs")); var path_1 = tslib_1.__importDefault(require("path")); var core_1 = require("@rnv/core"); var sdk_telemetry_1 = tslib_1.__importDefault(require("@rnv/sdk-telemetry")); var sdk_telemetry_2 = require("@rnv/sdk-telemetry"); var engine_core_1 = tslib_1.__importDefault(require("@rnv/engine-core")); var ora_1 = tslib_1.__importDefault(require("./ora")); var prompt_1 = tslib_1.__importDefault(require("./prompt")); var logger_1 = tslib_1.__importStar(require("./logger")); var terminateProcesses = function () { var runningProcesses = (0, core_1.getContext)().runningProcesses; try { runningProcesses.forEach(function (p) { p.kill(); }); } catch (e) { console.log(e); } runningProcesses.length = 0; }; var run = function (_a) { var RNV_HOME_DIR = _a.RNV_HOME_DIR; var packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../package.json')).toString()); var cmdValue = ''; var cmdOption = ''; commander_1.program.version(packageJson.version, '-v, --version', 'output current version'); core_1.RnvTaskCoreOptionPresets.withCore().forEach(function (param) { commander_1.program.option((0, core_1.generateStringFromTaskOption)(param), param.description); }); commander_1.program.allowUnknownOption(true); // integration options are not known ahead of time commander_1.program.helpOption(false); // Make both arguments optional un order to allow `$ rnv` top level command commander_1.program.arguments('[cmd] [option]').action(function (cmd, option) { cmdValue = cmd; cmdOption = option; }); commander_1.program.parse(process.argv); process.on('SIGINT', function () { terminateProcesses(); process.exit(0); }); // This looks weird but commander default help is actual function. // if you pass --help it will override it with undefined // So we need to check if it's not a function to output help // if (program.opts().help) { //program.outputHelp(); // Let's use alternative name for this flag // program.opts().help = true; // } // If the first argument is a flag, then the subCommand is missing // this occurs when rnv has to execute unknown commands (ie intergration commands) // commander does not handle this scenario automatically if (cmdOption && (cmdOption.startsWith('--') || cmdOption.startsWith('-'))) { cmdOption = ''; } (0, exports.executeRnv)({ cmd: cmdValue, subCmd: cmdOption, program: commander_1.program, process: process, spinner: ora_1.default, prompt: prompt_1.default, logger: logger_1.default, RNV_HOME_DIR: RNV_HOME_DIR, }) .then(function () { (0, logger_1.logSummary)(); (0, core_1.exitRnvCore)(0); }) .catch(function (e) { terminateProcesses(); (0, core_1.logError)(e); (0, logger_1.logSummary)(); (0, core_1.exitRnvCore)(1); }); }; exports.run = run; var executeRnv = function (_a) { var cmd = _a.cmd, subCmd = _a.subCmd, process = _a.process, program = _a.program, spinner = _a.spinner, prompt = _a.prompt, logger = _a.logger, RNV_HOME_DIR = _a.RNV_HOME_DIR; return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: // set mono and ci if json is enabled if (program.opts().json) { program.opts().mono = true; program.opts().ci = true; } (0, core_1.createRnvApi)({ spinner: spinner, prompt: prompt, analytics: sdk_telemetry_2.Telemetry, logger: logger, getConfigProp: core_1.getConfigProp, doResolve: core_1.doResolve }); (0, core_1.createRnvContext)({ program: program, process: process, cmd: cmd, subCmd: subCmd, RNV_HOME_DIR: RNV_HOME_DIR }); (0, core_1.logInitialize)(); (0, core_1.loadWorkspacesConfigSync)(); sdk_telemetry_2.Telemetry.initialize(); // Example of how to register set of tasks manually (0, core_1.registerRnvTasks)(sdk_telemetry_1.default.tasks); return [4 /*yield*/, (0, core_1.registerEngine)(engine_core_1.default)]; case 1: _b.sent(); return [4 /*yield*/, (0, core_1.executeRnvCore)()]; case 2: _b.sent(); return [2 /*return*/]; } }); }); }; exports.executeRnv = executeRnv; //# sourceMappingURL=index.js.map