egg-xc-base
Version:
a base framework with egg.js
125 lines (118 loc) • 4.42 kB
JavaScript
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()