Quiz_dashboard/src/Extensions/FileGenerator/generateModelEnum.js
2024-11-22 02:06:36 +03:00

54 lines
1.5 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const MODEL_ENUM_FILE = "./src/enums/Model.ts"; // Path to the ModalEnum file
const newEnums = [
{ key: "TEST_EDIT", value: "TEST.edit" },
{ key: "TEST_ADD", value: "TEST.add" },
{ key: "TEST_DELETE", value: "TEST.delete" },
];
const enumName = "ModalEnum"; // Update this to match your enum name
const generateEnumEntries = (enums) =>
enums.map(({ key, value }) => ` ${key} = "${value}",`).join("\n");
const updateModelEnumFile = () => {
if (!fs.existsSync(MODEL_ENUM_FILE)) {
console.error(`Error: File ${MODEL_ENUM_FILE} does not exist.`);
return;
}
const fileContent = fs.readFileSync(MODEL_ENUM_FILE, "utf-8");
const existingEnums = new Set(
Array.from(fileContent.matchAll(/(\w+)\s*=\s*"([\w.]+)"/g), (match) =>
match[1].toLowerCase()
)
);
const uniqueEnums = newEnums.filter(
({ key }) => !existingEnums.has(key.toLowerCase())
);
if (uniqueEnums.length === 0) {
console.log("No new enums to add. All enums already exist.");
return;
}
const newEnumEntries = generateEnumEntries(uniqueEnums);
const updatedContent = fileContent.replace(
new RegExp(`export\\s+enum\\s+${enumName}\\s*{([\\s\\S]*?)}`),
(match, existingContent) => {
return `export enum ${enumName} {\n${existingContent.trim()}\n\n${newEnumEntries}\n}`;
}
);
fs.writeFileSync(MODEL_ENUM_FILE, updatedContent, "utf-8");
console.log("ModalEnum file updated successfully!");
};
updateModelEnumFile();