@rnv/cli
Version:
ReNative CLI
114 lines • 5.02 kB
JavaScript
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
;