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