UNPKG

gxd-vue-library

Version:

依赖与element Ui插件库,聚福宝福利PC端插件库

141 lines (112 loc) 3.95 kB
'use strict'; 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);