UNPKG

simple-coder

Version:

simple code tool

154 lines (115 loc) 5.81 kB
const path = require('path'); const fs = require('fs'); const chalk = require('chalk'); const codeTools = require('../code-tools'); const codeOperator = require('../operation'); function createModuleFiles(targetRootPath, moduleDefine, template,targetName) { let haveTarget = false; // console.log('current target class-->',targetName); console.log('create module[', moduleDefine.moduleName, ']...') let templateRootPath = path.join(__dirname, "../../templates",template.templateRootPath); moduleDefine.moduleClassName = codeTools.firstUpper(moduleDefine.moduleName); moduleDefine.moduleName = codeTools.firstLower(moduleDefine.moduleName); moduleDefine.modelClassName = moduleDefine.modelName; moduleDefine.moduleDtoClassName = moduleDefine.moduleClassName + "Dto"; let templateFile = ''; let targetPath = ''; let targetFile = ''; //create module dao if ((!targetName) || targetName.toLowerCase() == 'dao') { haveTarget = true; templateFile = path.join(templateRootPath, "Dao.java"); targetPath = path.join(targetRootPath, "/dao"); codeTools.createDirectoryEx(targetPath); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "Repository.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); } //create module dto objects if ((!targetName) || targetName.toLowerCase() == 'dto') { haveTarget = true; targetPath = path.join(targetRootPath, "/dto"); codeTools.createDirectoryEx(targetPath); templateFile = path.join(templateRootPath, "Dto.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "Dto.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); templateFile = path.join(templateRootPath, "DtoDetail.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "DetailDto.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); templateFile = path.join(templateRootPath, "DtoNew.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "NewDto.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); templateFile = path.join(templateRootPath, "DtoList.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "sDto.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); templateFile = path.join(templateRootPath, "DtoDetailList.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "DetailsDto.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); } //create service if ((!targetName) || targetName.toLowerCase() == 'service') { haveTarget = true; targetPath = path.join(targetRootPath, "/service"); codeTools.createDirectoryEx(targetPath); templateFile = path.join(templateRootPath, "Service.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "Service.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); } //create controller if ((!targetName) || targetName.toLowerCase() == 'controller') { haveTarget = true; targetPath = path.join(targetRootPath, "/controller"); codeTools.createDirectoryEx(targetPath); templateFile = path.join(templateRootPath, "Controller.java"); targetFile = path.join(targetPath, moduleDefine.moduleClassName + "Controller.java"); codeTools.generateCode(templateFile, moduleDefine, targetFile); } if (!haveTarget){ console.log(chalk.red('incorrect target name ! please confirm input correct target!')) return false; } return true; } module.exports = async (packageName, moduleName, targetName) => { let result = true; const template = await codeOperator.fetchTemplateConfig('server:spring-boot'); let packagePath = codeTools.javaPackageToPath(packageName); let targetRootPath = path.join(process.cwd(), template.sourcePath, packagePath); let targetModelPath = path.join(targetRootPath, "model"); if (!fs.existsSync(targetModelPath)){ targetModelPath = path.join(targetRootPath, "models"); if (!fs.existsSync(targetModelPath)){ console.log(chalk.red('***ERROR*** Model Directory not found, please ensure input correct pacakge name and model name!')); return false; } } let moduleDefines = codeTools.getPathJavaFileText(targetModelPath); if (moduleName) { let moduleDefine; moduleDefines.forEach(item => { if (item.moduleName.toLowerCase() == moduleName.toLowerCase()) { moduleDefine = item; console.log('found match module[', moduleName, '] with model name[' + item.modelName +'] continue to create module files...'); } }); if (moduleDefine) { moduleDefine.packageName = packageName; result = createModuleFiles(targetRootPath, moduleDefine,template,targetName); //console.log('Successful create module files!'); } else { console.log('module not found!'); result; } return true; }else{ moduleDefines.forEach(moduleDefine => { moduleDefine.packageName = packageName; result = createModuleFiles(targetRootPath, moduleDefine,template,targetName); }); if (result){ console.log('Successful to create module files!'); }else{ console.log('Failed to create module files!'); } return true; } }