simple-coder
Version:
tool to generate code and framework
185 lines (141 loc) • 6.63 kB
JavaScript
var path = require('path');
var fs = require('fs');
var codeTools = require('../code_tools');
var xtools = require('../xtools');
var config = {
javaInit: true,
appName : "",
module: "",
sideName:"server",
workRootPath: process.cwd(),
targetRootPath:process.cwd(),
language : "java",
basePackage:"com.simple.server.bz",
//当前工作目录下的模块定义目录
workModulesPath: function(){return path.join(this.workRootPath , "modules/")},
targetServerRootPath:function(){return path.join(this.targetRootPath,"/")},
targetServerCodePath:function(){return path.join(this.targetServerRootPath(),"/src/main/java/",xtools.javaPackageToPath(this.basePackage))},
//当前工作目录下的模板目录
workTemplateRootPath: function(){return path.join(this.workRootPath,"node_modules/simple-coder/templates/");},
templatePath: function(){return this.workTemplateRootPath() + this.sideName + "/" + this.language + "/";},
workServerTemplatePath:function(){return path.join(this.templatePath(),"module/")},
workCopyFilesTemplatePath:function() {return path.join(this.templatePath() , "copyfiles/")},
workReleasePackageTemplatePath:function() {return path.join(this.templatePath() , this.sideName,"release/");},
//web path define
//打包工具代码目录
targetReleasePackagePath:function(){return path.join(this.targetServerRootPath(), "/release/");},
buildBaseParams: function(){
return {
appName: this.appName,
moduleName:this.module,
};
}
};
function createConfigRouter(moduleName,moduleDefine){
var filename = "router.js";
var tFilename = filename;
templateFile = config.workRouterTemplatePath() + tFilename ;
moduleFile = config.targetModuleRouterPath() + filename;
var params = config.buildBaseParams();
codeTools.generateCode(templateFile,params,moduleFile);
};
function createReleasePackageFiles(){
var filename = "webpack.config.js";
tFilename = filename;
var releaseFilename = config.platform + "." +config.endName + "." +filename;
var templateFile = config.workReleasePackageTemplatePath() + tFilename ;
var moduleFile = config.targetReleasePackagePath() + releaseFilename;
var params = config.buildBaseParams();
codeTools.generateCode(templateFile,params,moduleFile);
};
function createServerBZModules(moduleName,moduleDefine){
var mName = codeTools.firstUpper(moduleName);
var params = config.buildBaseParams();
params.moduleDefine = moduleDefine;
params.moduleName = mName;
params.clsName = mName;
params.originModuleName = moduleName;
params.packageName = config.basePackage;
params.firstUpper = codeTools.firstUpper;
//codeTools.generateCode(templateFile,params,targetFile);
var templateFile = config.workServerTemplatePath() + "Entity.java" ;
var targetFile = config.targetServerCodePath() + "entity/" + mName + ".java";
codeTools.generateCode(templateFile,params,targetFile);
templateFile = config.workServerTemplatePath() + "Dao.java" ;
//var clsName = nName + "Repository";
targetFile = config.targetServerCodePath() + "dao/" + mName+"Repository.java";
codeTools.generateCode(templateFile,params,targetFile);
templateFile = config.workServerTemplatePath() + "Service.java" ;
targetFile = config.targetServerCodePath() + "service/" + mName + "Service.java";
codeTools.generateCode(templateFile,params,targetFile);
templateFile = config.workServerTemplatePath() + "Controller.java" ;
targetFile = config.targetServerCodePath() + "controller/" + mName + "Controller.java";
codeTools.generateCode(templateFile,params,targetFile);
};
function generateFrameworkDirectories(){
if (!config.javaInit) {
xtools.mkdirX(config.targetServerRootPath());
xtools.mkdirX(config.targetServerCodePath());
//xtools.mkdirX(config.targetReleasePackagePath());
}
console.log("targetServerRootPath:" + config.targetServerRootPath());
xtools.mkdirX(config.targetServerCodePath()+ 'entity');
xtools.mkdirX(config.targetServerCodePath()+ 'controller');
xtools.mkdirX(config.targetServerCodePath()+ 'service');
xtools.mkdirX(config.targetServerCodePath()+ 'dao');
}
function createModuleBaseDirectories(moduleName){
}
function copyProjectFrameworkFiles(){
}
function copyFrameworkFiles(){
var frameworkServerPath = path.join(config.workCopyFilesTemplatePath(), "/server/simpleserver/");
xtools.copyDirEx(frameworkServerPath,config.targetServerRootPath());
}
function copyReleaseFrameworkFiles(){
//var frameworkReleasePath = config.workCopyFilesTemplatePath() + "/release/";
// xtools.copyDirEx(frameworkReleasePath,config.targetReleasePackagePath());
}
function initPathEnv(defines){
var currentPath = process.cwd();
var serverRoot = "";
if (currentPath.indexOf('autocoder')>-1){
serverRoot = path.resolve(process.cwd(), '../');
config.javaInit = true;
}else{
serverRoot = path.join(process.cwd(), "server/java/simpleserver/");
config.javaInit = false;
}
config.workRootPath = currentPath;
config.targetRootPath = serverRoot;
config.basePackage = defines.basePackage;
config.apiServer = defines.apiServer;
console.log("workRootPath:" + config.workRootPath + "Code-targetServerPath:" + config.targetRootPath);
}
function initProjectEnv(defines){
initPathEnv(defines);
copyProjectFrameworkFiles();
}
function generateFramework(defines,param){
initPathEnv(defines);
generateFrameworkDirectories();
if (!config.javaInit){
copyFrameworkFiles();
copyReleaseFrameworkFiles();
}
}
function generateServerAPIModule(moduleName,moduleDefine){
config.module = moduleName;
createModuleBaseDirectories(moduleName);
createServerBZModules(moduleName,moduleDefine);
}
function generateModuleByName(moduleName,defines,param){
var mdefine = defines[moduleName];
if (!mdefine){return;}
console.log('module defines:' + JSON.stringify(mdefine));
generateServerAPIModule(mdefine.name,mdefine.fields);
}
exports.generateFramework = generateFramework;
exports.generateModuleByName = generateModuleByName;
exports.initEnv = initProjectEnv;
exports.coderDefine = {name:"server-java",desc:"create a server based java and related project code"};