UNPKG

@rnv/engine-core

Version:
132 lines 6.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var core_1 = require("@rnv/core"); var path_1 = tslib_1.__importDefault(require("path")); var _mergeDependencies = function (target, source) { if (source) { Object.keys(source).forEach(function (dep) { if (!target[dep]) { target[dep] = source[dep]; } }); } }; var _isPluginRequired = function (plugin, supportedPlatforms) { if (!plugin.supportedPlatforms) return true; return plugin.supportedPlatforms.some(function (platform) { return supportedPlatforms.includes(platform); }); }; var Question = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, confirmInstallEngines, filteredEngines, enginesToInstall, pkg, devDeps, deps, supportedPlatforms, cwd, _loop_1, _i, enginesToInstall_1, engine, plugins; var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: c = (0, core_1.getContext)(); if (!(0, core_1.fsExistsSync)(c.paths.project.config)) return [2 /*return*/, true]; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: 'confirmInstallEngines', type: 'confirm', message: 'You do not have any engines installed. Do you want to install them now?', })]; case 1: confirmInstallEngines = (_b.sent()).confirmInstallEngines; if (!confirmInstallEngines) return [2 /*return*/, true]; filteredEngines = (0, core_1.getFilteredEngines)(c); enginesToInstall = []; pkg = c.files.project.package; devDeps = pkg.devDependencies || {}; deps = pkg.dependencies || {}; pkg.devDependencies = devDeps; pkg.dependencies = deps; supportedPlatforms = (_a = data === null || data === void 0 ? void 0 : data.inputs) === null || _a === void 0 ? void 0 : _a.supportedPlatforms; Object.keys(filteredEngines).forEach(function (k) { var engVersion = (0, core_1.getScopedVersion)(c, k, filteredEngines[k], 'engineTemplates'); if (engVersion) { enginesToInstall.push({ key: k, version: engVersion, }); } }); if (!enginesToInstall.length) return [3 /*break*/, 5]; cwd = c.paths.project.dir; _loop_1 = function (engine) { var key, version, installCommand, nmDir, engineConfigPath, engineConfig_1; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: key = engine.key, version = engine.version; if (!(key && version)) return [3 /*break*/, 2]; installCommand = "".concat((0, core_1.isYarnInstalled)() ? 'yarn' : 'npm', " add ").concat(key, "@").concat(version, " --dev"); return [4 /*yield*/, (0, core_1.executeAsync)(installCommand, { cwd: cwd, })]; case 1: _c.sent(); devDeps[key] = version; nmDir = path_1.default.join(cwd, 'node_modules'); engineConfigPath = path_1.default.join(nmDir, key, core_1.RnvFileName.renativeEngine); engineConfig_1 = (0, core_1.readObjectSync)(engineConfigPath); if (engineConfig_1 && supportedPlatforms) { supportedPlatforms.forEach(function (platform) { var _a, _b; var npmDeps = (_b = (_a = engineConfig_1 === null || engineConfig_1 === void 0 ? void 0 : engineConfig_1.platforms) === null || _a === void 0 ? void 0 : _a[platform]) === null || _b === void 0 ? void 0 : _b.npm; if (npmDeps) { _mergeDependencies(deps, npmDeps.dependencies); _mergeDependencies(devDeps, npmDeps.devDependencies); } }); if (engineConfig_1 === null || engineConfig_1 === void 0 ? void 0 : engineConfig_1.npm) { _mergeDependencies(deps, engineConfig_1.npm.dependencies); _mergeDependencies(devDeps, engineConfig_1.npm.devDependencies); } } _c.label = 2; case 2: return [2 /*return*/]; } }); }; _i = 0, enginesToInstall_1 = enginesToInstall; _b.label = 2; case 2: if (!(_i < enginesToInstall_1.length)) return [3 /*break*/, 5]; engine = enginesToInstall_1[_i]; return [5 /*yield**/, _loop_1(engine)]; case 3: _b.sent(); _b.label = 4; case 4: _i++; return [3 /*break*/, 2]; case 5: plugins = c.buildConfig.plugins; if (plugins) { Object.keys(plugins).forEach(function (k) { var plugin = (0, core_1.getMergedPlugin)(c, k); if (!plugin) return; var version = plugin.version; if (supportedPlatforms) { if (plugin.disabled !== true && plugin.disableNpm !== true && _isPluginRequired(plugin, supportedPlatforms)) { if (version) { if (!deps[k]) { deps[k] = version; } } } } }); } (0, core_1.writeFileSync)(c.paths.project.package, c.files.project.package); return [2 /*return*/]; } }); }); }; exports.default = Question; //# sourceMappingURL=installEngines.js.map