gxd-vue-library
Version:
依赖与element Ui插件库,聚福宝福利PC端插件库
141 lines (112 loc) • 3.95 kB
JavaScript
;
const fileHelper = require('./../fileHepler');
const basePath = require('./../path');
const clog = require('./../clog');
const path = require('path');
const rootSchemas = require('./../schemas/system');
rootSchemas['filePath'] = path.normalize('./../schemas/system.js');
rootSchemas['filePathName'] = 'system';
const handleUrls = require('./coder.create.urls');
const handleType = require('./coder.create.types');
const handleApis = require('./coder.create.api');
const handleStore = require('./coder.create.store');
const handleRoles = require('./coder.create.roles');
const logDir = basePath.logDir;
const utils = require('./../lib/utils');
let {
getUrls,
getApiData,
getArgv,
getLogs
} = utils;
let schemasArray = [rootSchemas];
let schemas = fileHelper.getDirFiles(basePath.schemasDirectory, ['js']);
Object.keys(schemas).map(key=>{
let temp = require(basePath.schemasDirectory + '/' + schemas[key]['fullName']);
temp['filePath'] = basePath.schemasDirectory + '/' + schemas[key]['fullName'];
temp['filePathName'] = schemas[key]['path'];
schemasArray.push(temp);
});
/**
* @description 检查方法是否已经存在
* @type {{}}
*/
let checkMapFnObject = {};
const checkMapFnRepeat = (types)=>{
types.map(item=>{
item.value.map(it=>{
if(checkMapFnObject[it.key]) {
utils.logsLine(clog)
clog(`与模型配置相同,其文件路径:${checkMapFnObject[it.key].filePath}`, 'red');
clog(JSON.stringify(checkMapFnObject[it.key], null, 2), 'red');
console.log('\n')
clog(`当前配置相同文件路径:${item.filePath}`, 'red');
clog(JSON.stringify(it, null, 2), 'red');
clog(`请您检查你的模型文件`, 'red');
utils.logsLine(clog, 'end')
process.exit(0);
}
else {
checkMapFnObject[it.key] = {...it, filePath: item.filePath};
}
})
});
return false;
};
const init = (schemas)=>{
let urls = []; //生成API_URL
let apis = []; //生成APIS
let types = []; //生成Types
let model = [];
//生成全部模块
schemas.map(item => {
if (getUrls(item) !== null) types.push(getUrls(item))
});
//检查方法名字是否相同
checkMapFnRepeat(types)
if(getArgv().length > 0){
schemas = schemas.filter(item => {
if(item.name === getArgv()[0]) {
return item
}
})
}
//模块不存在
if(schemas.length === 0){
clog(`【${getArgv()}】模块不存在`, 'red');
return;
}
schemas.map(item => {
if (getUrls(item) !== null) urls.push(getUrls(item));
if (getApiData(item) !== null) apis.push(getApiData(item));
model.push(item.name);
});
Promise.all([
handleUrls(urls),
handleType(types),
handleApis(apis),
handleStore(apis),
handleRoles(apis)
])
.then(res=>{
clog(`生成API接口成功:`, 'cyanBG');
utils.logsLine(clog, 'start');
clog(`模型:${JSON.stringify(model, null, 2)}`, 'green');
utils.logsLine(clog);
clog(' API_URl 创建完成!', 'green');
clog(' TYPES 创建完成!', 'green');
clog(' API 创建完成!', 'green');
clog(' Store 创建完成!', 'green');
clog(' Roles 创建完成!', 'green');
fileHelper.writeFileSync(logDir + '/url', getLogs('url', `生成模块:【${model.join('】,【')}】`));
fileHelper.writeFileSync(logDir + '/api', getLogs('api', `生成模块:【${model.join('】,【')}】`));
fileHelper.writeFileSync(logDir + '/store', getLogs('store', `生成模块:【${model.join('】,【')}】`));
fileHelper.writeFileSync(logDir + '/role', getLogs('role', `生成模块:【${model.join('】,【')}】`));
fileHelper.writeFileSync(logDir + '/type', getLogs('type', `生成模块:【${model.join('】,【')}】`));
utils.logsLine(clog);
})
.catch(res=>{
console.log(res)
});
};
init(schemasArray);