UNPKG

@rnv/engine-core

Version:
193 lines 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateProjectOverview = exports.telemetryNewProject = exports.configureConfigOverrides = exports.initNewProject = exports.saveProgressIntoProjectConfig = exports.validateAndAssign = exports.checkInputValue = exports.processChdirToProject = void 0; var tslib_1 = require("tslib"); var core_1 = require("@rnv/core"); var path_1 = tslib_1.__importDefault(require("path")); var processChdirToProject = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c; return tslib_1.__generator(this, function (_a) { c = (0, core_1.getContext)(); // In order to execute rnv from new origin (sub folder we need to reset paths to new cwd()) process.chdir(c.paths.project.dir); (0, core_1.populateContextPaths)(c, c.paths.rnv.dir); return [2 /*return*/, true]; }); }); }; exports.processChdirToProject = processChdirToProject; var checkInputValue = function (value) { return value && typeof value === 'string' && value !== '' ? true : false; }; exports.checkInputValue = checkInputValue; var validateAndAssign = function (_a, ci) { var value = _a.value, validFn = _a.validFn, name = _a.name, defaultVal = _a.defaultVal, message = _a.message, warning = _a.warning; return tslib_1.__awaiter(void 0, void 0, void 0, function () { var isValid, warningMessage, answer; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: isValid = validFn(value); if (!(value && isValid === true)) return [3 /*break*/, 1]; return [2 /*return*/, value]; case 1: warningMessage = typeof isValid === 'string'; return [4 /*yield*/, (0, core_1.inquirerPrompt)({ name: name, type: 'input', default: defaultVal, validate: validFn, message: message, warningMessage: ci && warningMessage ? warning : undefined, })]; case 2: answer = _b.sent(); return [2 /*return*/, answer[name]]; } }); }); }; exports.validateAndAssign = validateAndAssign; var saveProgressIntoProjectConfig = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c; return tslib_1.__generator(this, function (_a) { c = (0, core_1.getContext)(); (0, core_1.writeFileSync)(c.paths.project.config, data.files.project.renativeConfig); (0, core_1.writeFileSync)(c.paths.project.package, data.files.project.packageJson); return [2 /*return*/]; }); }); }; exports.saveProgressIntoProjectConfig = saveProgressIntoProjectConfig; var initNewProject = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var c, data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: c = (0, core_1.getContext)(); c.paths.project.package = path_1.default.join(c.paths.project.dir, core_1.RnvFileName.package); c.paths.project.config = path_1.default.join(c.paths.project.dir, core_1.RnvFileName.renative); data = { defaults: { appVersion: '0.1.0', templateName: '@rnv/template-starter', projectName: 'My Renative Project', appTitle: 'My Renative App', workspaceID: 'rnv', }, inputs: {}, files: { project: { renativeConfig: {}, packageJson: {}, }, configTemplates: {}, template: { renativeTemplateConfig: {}, renativeConfig: {}, }, }, }; // TODO: This enforces to generate initial runtime configs. find more reliable way to do this return [4 /*yield*/, (0, core_1.updateRenativeConfigs)()]; case 1: // TODO: This enforces to generate initial runtime configs. find more reliable way to do this _a.sent(); return [2 /*return*/, data]; } }); }); }; exports.initNewProject = initNewProject; var configureConfigOverrides = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var inputs, files, renativeConfig, supPlats, engines; return tslib_1.__generator(this, function (_a) { inputs = data.inputs, files = data.files; renativeConfig = files.project.renativeConfig; supPlats = inputs.supportedPlatforms || []; // In case of copied config instead of extended we want to cleanup unused platforms if (renativeConfig.platforms) { Object.keys(renativeConfig.platforms).forEach(function (k) { var key = k; if (!supPlats.includes(key) && renativeConfig.platforms) { delete renativeConfig.platforms[key]; } }); } // This is project config override only renativeConfig.defaults = renativeConfig.defaults || {}; renativeConfig.defaults.supportedPlatforms = supPlats; engines = renativeConfig === null || renativeConfig === void 0 ? void 0 : renativeConfig.engines; if (engines) { // Remove unused engines based on selected platforms // TODO: old logic, this need to be reworked. // supPlats.forEach((k) => { // const selectedEngineId = // loadedConf?.platforms?.[k]?.engine || c.files.rnvConfigTemplates.config?.platformTemplates?.[k]?.engine; // if (selectedEngineId) { // const selectedEngine = findEngineKeyById(selectedEngineId); // if (selectedEngine?.key) { // engines[selectedEngine.key] = engines[selectedEngine.key]; // } // } // }); // Object.keys(engines).forEach((engKey) => { // const engVersion = files.configTemplates.config?.engineTemplates?.[engKey]?.version; // if (engVersion) { // if (files.project.packageJson.devDependencies) { // files.project.packageJson.devDependencies[engKey] = engVersion; // } // } // }); } return [2 /*return*/]; }); }); }; exports.configureConfigOverrides = configureConfigOverrides; var telemetryNewProject = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var inputs; var _a; return tslib_1.__generator(this, function (_b) { // Do not log telementry when developing rnv if ((0, core_1.getContext)().paths.IS_LINKED) return [2 /*return*/]; try { inputs = data.inputs; (0, core_1.getApi)().analytics.captureEvent({ type: 'newProject', template: (_a = inputs.template) === null || _a === void 0 ? void 0 : _a.packageName, platforms: inputs.supportedPlatforms, }); } catch (e) { (0, core_1.logDebug)(e); } return [2 /*return*/]; }); }); }; exports.telemetryNewProject = telemetryNewProject; var generateProjectOverview = function (data) { var _a, _b, _c; var inputs = data.inputs; // const addon = inputs.template?.localPath ? ` ${chalk().gray(inputs.template?.localPath)}` : ''; var tempString = ((_a = inputs.template) === null || _a === void 0 ? void 0 : _a.localPath) || "".concat((_b = inputs.template) === null || _b === void 0 ? void 0 : _b.packageName, "@").concat((_c = inputs.template) === null || _c === void 0 ? void 0 : _c.version); var highlight = (0, core_1.chalk)().bold; var installAddon = !inputs.confirmProjectInstall ? "\n ".concat((0, core_1.isYarnInstalled)() ? 'yarn' : 'npm install') : ''; var str = " Generated Project Summary:\n -------------------------\n Project Name (--projectName): ".concat(highlight(inputs.projectName), "\n Package name: ").concat(highlight(inputs.packageName), "\n Project Version (--appVersion): ").concat(highlight(inputs.appVersion), "\n Workspace (--workspace): ").concat(highlight(inputs.workspaceID), "\n App Title (--title): ").concat(highlight(inputs.appTitle), "\n App ID (--id): ").concat(highlight(inputs.appID), "\n Project Template (--template): ").concat(highlight(tempString), "\n Git Enabled (--gitEnabled): ").concat(highlight(inputs.confirmEnableGit), "\n Enabled Platforms: ").concat(highlight((inputs.supportedPlatforms || []).join(', ')), "\n -------------------------\n ").concat((0, core_1.chalk)().green('✔ Your project is ready!'), " Run it with:\n").concat((0, core_1.chalk)().bold.white("\n cd ".concat(inputs.projectFolderName).concat(installAddon, "\n npx rnv run"))); return str; }; exports.generateProjectOverview = generateProjectOverview; // const findEngineKeyById = (id: string) => { // const c = getContext(); // const engineTemplates = c.files.rnvConfigTemplates.config?.engineTemplates; // if (engineTemplates) { // const etk = Object.keys(engineTemplates); // for (let i = 0; i < etk.length; i++) { // const engine = engineTemplates[etk[i]]; // if (engine) { // if (engine.id === id) { // engine.key = etk[i]; // return engine; // } // } // } // } // }; //# sourceMappingURL=questionHelpers.js.map