feat: generation of modules from the server, moved modules fields from the general tab
This commit is contained in:
61
src/modules/modulesFileGen/modulesFileGen.cjs
Normal file
61
src/modules/modulesFileGen/modulesFileGen.cjs
Normal file
@@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var axios_1 = require("axios");
|
||||
var fs = require("fs");
|
||||
// endregion
|
||||
var OUTPUT_FILE = "./src/modules/modules.tsx";
|
||||
function camelToConstCase(camelStr) {
|
||||
return camelStr
|
||||
.replace(/([a-z])([A-Z])/g, "$1_$2")
|
||||
.toUpperCase();
|
||||
}
|
||||
var writeToFile = function (data) {
|
||||
try {
|
||||
fs.writeFileSync(OUTPUT_FILE, data.trim());
|
||||
console.log("File successfully generated.");
|
||||
}
|
||||
catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
var getImports = function (modules) {
|
||||
var prefix = "import { ";
|
||||
var postfix = " } from \"@tabler/icons-react\"\n" +
|
||||
"import ModulesType from \"./types.tsx\";\n" +
|
||||
"import connectModules from \"./connectModules.tsx\";";
|
||||
var filteredModules = modules.filter(function (module) { return module.iconName; });
|
||||
var icons = filteredModules.map(function (module) { return module.iconName; }).join(", ");
|
||||
return prefix + icons + postfix;
|
||||
};
|
||||
var getModuleNames = function (modules) {
|
||||
return modules.map(function (module) {
|
||||
return "".concat(camelToConstCase(module.key), " = \"").concat(module.key, "\"");
|
||||
}).join(",\n\t");
|
||||
};
|
||||
var getModules = function (modules) {
|
||||
return modules.map(function (module) {
|
||||
var iconStr = "null";
|
||||
if (module.iconName) {
|
||||
iconStr = "<" + module.iconName + " />";
|
||||
}
|
||||
return "[ModuleNames.".concat(camelToConstCase(module.key), "]: { info: { label: \"").concat(module.label, "\", key: \"").concat(module.key, "\", icon: ").concat(iconStr, " } }");
|
||||
}).join(",\n\t");
|
||||
};
|
||||
var generateRows = function (modules) {
|
||||
var imports = getImports(modules);
|
||||
var moduleNames = "\n\nexport enum ModuleNames {\n\t".concat(getModuleNames(modules), "\n}\n");
|
||||
var modulesStr = "\nconst modules: ModulesType = {\n\t".concat(getModules(modules), "\n};\n");
|
||||
var connectModules = "\nexport const MODULES = connectModules(modules);";
|
||||
var result = imports + moduleNames + modulesStr + connectModules;
|
||||
writeToFile(result);
|
||||
};
|
||||
var modulesFileGen = function () {
|
||||
console.log("Start file generation...");
|
||||
axios_1.default
|
||||
.get("http://127.0.0.1:8000/project/modules")
|
||||
.then(function (response) {
|
||||
generateRows(response.data.modules);
|
||||
})
|
||||
.catch(function (err) { return console.log(err); });
|
||||
};
|
||||
modulesFileGen();
|
||||
Reference in New Issue
Block a user