sx-cli-tool
Version:
Laravel va Vue frameworklaridagi monolith arxitektura loyihalarni boshqarish uchun mo'ljallangan CLI tool
53 lines (52 loc) • 2.59 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateRoute = generateRoute;
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const formatter_1 = require("../../utils/formatter");
const prettier_1 = require("../../utils/prettier");
function generateRoute(entityName, apiIdPlural, projectPath, groupName = "/admin") {
const routePath = path_1.default.join(projectPath, "routes", "api.php");
const template = `use App\\Http\\Controllers${(0, formatter_1.replaceSlashes)(groupName)}\\${entityName}Controller;
// ${apiIdPlural} ro'yxatini olish
Route::get('${groupName.toLocaleLowerCase()}/${apiIdPlural}', [${entityName}Controller::class, 'index']);
// Yangi ${entityName.toLocaleLowerCase()} qo'shish
Route::post('${groupName.toLocaleLowerCase()}/${apiIdPlural}', [${entityName}Controller::class, 'store']);
// Muayyan ${entityName.toLocaleLowerCase()} olish
Route::get('${groupName.toLocaleLowerCase()}/${apiIdPlural}/{id}', [${entityName}Controller::class, 'show']);
// Muayyan ${entityName.toLocaleLowerCase()} yangilash
Route::put('${groupName.toLocaleLowerCase()}/${apiIdPlural}/{id}', [${entityName}Controller::class, 'update']);
// Muayyan ${entityName.toLocaleLowerCase()} o'chirish
Route::delete('${groupName.toLocaleLowerCase()}/${apiIdPlural}/{id}', [${entityName}Controller::class, 'destroy']);
`;
// Faylni o'qish va qo'shish
fs_1.default.readFile(routePath, "utf8", (err, data) => {
if (err) {
console.error("Faylni o'qishda xato:", err);
return;
}
// Agar mavjud bo'lsa, kodni tekshirish
if (!data.includes("use App\\Http\\Controllers\\" +
(0, formatter_1.replaceSlashes)(groupName) +
"\\" +
entityName +
"Controller;")) {
// Faylga yangi marshrutni qo'shish
const updatedData = `${data.trim()}\n${template.trim()}\n`;
fs_1.default.writeFile(routePath, updatedData, "utf8", (err) => {
if (err) {
console.error("Faylni yangilashda xato:", err);
return;
}
console.log("Marshrut muvaffaqiyatli qo'shildi!");
(0, prettier_1.formatPhpFile)(routePath);
});
}
else {
console.log("Marshrut allaqachon mavjud.");
}
});
}