UNPKG

egg-xc-base

Version:

a base framework with egg.js

125 lines (118 loc) 4.42 kB
const fs = require('fs') const path = require('path') const moment = require('moment') let _module = null let _ctx = null let _table = null let _db = null let args = process.argv let time = null async function doThat() { if( args.length < 3 ){ throw new Error( ` 指令: yarn api-ctx Error 缺少传入参数: 1.模块 2.上下文根 3.[表名称]可选 4.[数据库]可选 默认db1 指令构成: yarn api-ctx 模块 上下文根 [表名称] [数据库] eg: yarn api-ctx room element jg_room_element db1 `) }else if( args.length < 4){ throw new Error(` 指令: yarn api-ctx ${args[2]} Error 缺少传入参数: 1.上下文根 2.[表名称]可选 3.[数据库]可选 默认db1 指令构成: yarn api-ctx 模块 上下文根 [表名称] [数据库] eg: yarn api-ctx room element jg_room_element db1 `) }else{ time = new moment( Date.now()).format('YYYY-MM-DD HH:mm:ss.SSS') console.log(` 指令: yarn api-ctx ${args[2]} ${args[3]} ${args.length>4?args[4]:''} ${args.length>5?args[5]:''} `) _module = args[2] _ctx = args[3] console.log(`传入模块--> ${_module}`) console.log(`传入上下文根--> ${_ctx}`) if(args.length>4){ _table = args[4] console.log(`传入数据库表--> ${_table}`) } if(args.length>5){ _db = args[5] console.log(`传入数据库--> ${_db}`) } if( !fs.existsSync(path.join(__dirname,`../api/${_module}`))){ throw new Error(`Error-->${_module}模块不存在!_请先运行 yarn run api-init`) } if( !fs.existsSync(path.join(__dirname,`../api/${_module}/.init`))){ throw new Error(`Error-->${path.resolve(`../api/${_module}/.init`)}不存在!`) } if( !fs.existsSync(path.join(__dirname,`../api/${_module}/.init/.init.json`))){ throw new Error(`Error-->${path.resolve(`../api/${_module}/.init/.init.json`)}不存在!`) } let initJson = require(`../api/${_module}/.init/.init.json`) if(initJson.ctxs[_ctx]){ throw new Error("Error-->.init.json该上下文根已存在! "+ _ctx) } initJson.ctxs[_ctx] = { name : null, group : _module + (_ctx?'_'+_ctx:''), db : null, table : null, api_num : 0, apis : [] } if(_table){ const apiInitDb = require('./.apiInitDb') let info = await apiInitDb.doIt( { _module, _ctx, _table, _db } ) initJson.ctxs[_ctx].name = info.name initJson.ctxs[_ctx].api_num = info.api_num initJson.ctxs[_ctx].db = info.db initJson.ctxs[_ctx].table = info.table initJson.ctxs[_ctx].apis = info.apis initJson.api_num += info.api_num }else{ //初始化controller service router const apiInitNormal = require('./.apiInitNormal') let info = await apiInitNormal.doIt({ _module, _ctx }) initJson.ctxs[_ctx].api_num = info.api_num initJson.ctxs[_ctx].apis = info.apis initJson.api_num += info.api_num } initJson.ver += 1 initJson.update_time = time fs.writeFileSync( path.join(__dirname,`../api/${_module}/.init/.init.json`), JSON.stringify(initJson,0,3) ) console.log(`更新.init.json文件 --> `+path.resolve( `../api/${_module}/.init/.init.json 版本号:${ initJson.ver }`)) } } async function doIt() { console.log(`------------------------------------------- apiInit start --------------------------------------------`) try { await doThat() console.log(`apiInit result --> ${_module?'模块:'+_module+' ':''}成功 *^v^* `) }catch (err){ console.error(err.stack) console.log(err.message) console.log(`apiInit result --> ${_module?'模块:'+_module+' ':''}失败 -o(╥﹏╥)o -`) } console.log(`------------------------------------------- apiInit End ----------------------------------------------`) } doIt()