@rnv/engine-core
Version:
ReNative Engine Core
132 lines • 6.95 kB
JavaScript
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
;