tamim-cli
Version:
A CLI tool for generating module boilerplate code including routes, controllers, services, and more
62 lines (61 loc) • 2.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = addFile;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const controller_1 = __importDefault(require("../service/addFile/files/controller"));
const route_1 = __importDefault(require("../service/addFile/files/route"));
const validation_1 = __importDefault(require("../service/addFile/files/validation"));
const service_1 = __importDefault(require("../service/addFile/files/service"));
const interface_1 = __importDefault(require("../service/addFile/files/interface"));
const model_1 = __importDefault(require("../service/addFile/files/model"));
const utils_1 = __importDefault(require("../service/addFile/files/utils"));
const constants_1 = __importDefault(require("../service/addFile/files/constants"));
function addFile(moduleFiles) {
for (const file of moduleFiles) {
const [modulePath, fileType] = file.split(":");
const moduleArray = modulePath.includes("/")
? modulePath.split("/")
: [modulePath];
const moduleName = moduleArray[moduleArray.length - 1];
let content = "";
switch (fileType) {
case "controller":
content = (0, controller_1.default)(moduleName);
break;
case "route":
content = (0, route_1.default)(moduleName);
break;
case "validation":
content = (0, validation_1.default)(moduleName);
break;
case "service":
content = (0, service_1.default)(moduleName);
break;
case "interface":
content = (0, interface_1.default)(moduleName);
break;
case "model":
content = (0, model_1.default)(moduleName);
break;
case "constant":
content = (0, constants_1.default)(moduleName);
break;
case "utils":
content = (0, utils_1.default)(moduleName);
break;
default:
const capitalizedModuleName = moduleName[0].toUpperCase() + moduleName.slice(1);
content = `// Define your ${fileType} logic here\nexport const ${capitalizedModuleName}${fileType} = {};`;
}
if (content) {
const moduleDir = path_1.default.join(process.cwd(), "src", "app", "modules", ...moduleArray);
fs_1.default.mkdirSync(moduleDir, { recursive: true });
const filePath = path_1.default.join(moduleDir, `${moduleName}.${fileType}.ts`);
fs_1.default.writeFileSync(filePath, content, "utf8");
}
}
}