UNPKG

@jsgurucompany/jsg-nestjs-common

Version:

Initial README.md

60 lines 2.95 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScaffoldService = void 0; const common_1 = require("@nestjs/common"); const fs = require("fs"); const fsExtra = require("fs-extra"); const handlebars = require("handlebars"); const glob = require("glob"); const stringcase_1 = require("../util/stringcase"); let ScaffoldService = class ScaffoldService { async scaffold(modelName) { const { pascalCase: modelPascalCase, snakeCase: modelSnakeCase, kebabCase: modelKebabCase, camelCase: modelCamelCase, pluralSnakeCase: pluralModelSnakeCase, pluralKebabCase: pluralModelKebabCase, } = (0, stringcase_1.getStringCases)(modelName); const modelStringCases = { pascalName: modelPascalCase, snakeName: modelSnakeCase, kebabName: modelKebabCase, camelName: modelCamelCase, pluralSnakeName: pluralModelSnakeCase, pluralKebabName: pluralModelKebabCase, }; const newDestination = `${__dirname}/../../${modelKebabCase}`; await fsExtra.copy(`${__dirname}/template/`, newDestination); this.performModuleScaffolding({ newDestination, modelStringCases, }); } performModuleScaffolding({ newDestination, modelStringCases, }) { glob(`${newDestination}/**/*.hbs`, (error, filePaths) => { if (error) { throw error; } filePaths.forEach((filePath) => { const fileBuffer = fs.readFileSync(filePath); const template = handlebars.compile(fileBuffer.toString()); const output = template(modelStringCases); const currentDirParts = filePath.split('/'); const fileName = currentDirParts.pop(); const newFileName = fileName .replace('_model_', modelStringCases.kebabName) .replace('.hbs', '.ts'); currentDirParts.push(newFileName); const newFilePath = currentDirParts.join('/'); fs.writeFileSync(newFilePath, output); fs.unlinkSync(filePath); }); }); } }; ScaffoldService = __decorate([ (0, common_1.Injectable)() ], ScaffoldService); exports.ScaffoldService = ScaffoldService; //# sourceMappingURL=scaffold.service.js.map