1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| require('ts-node/register');
let parseArgs = function (args) { let argsMap = {}; let mainPos = 1;
while (args[mainPos].indexOf('--') > 0) { mainPos++; } argsMap.main = args[mainPos];
for (let i = (mainPos + 1); i < args.length; i++) { let arg = args[i]; let sep = arg.indexOf('='); let key = arg.slice(0, sep); let value = arg.slice(sep + 1); if (!isNaN(Number(value)) && (value.indexOf('.') < 0)) { value = Number(value); } argsMap[key] = value; }
return argsMap; }; const program = parseArgs(process.argv);
const util = require('util'); const path = require('path'); const fs = require('fs'); const root = path.resolve(__dirname, '../'); const argroot = program['argroot'] ? program['argroot'] : root; const cfgenv = program['cfgenv'] ? program['cfgenv'] : 'dev110'; const dist = program['dist'] === 'true' ? 'dist/' : ''; process.argv.push('cfgenv=' + cfgenv); const env = program['env'] ? program['env'] : 'development';
const masterApp = { "name": cfgenv + "-master", "cwd": argroot + '/logicServer/game-server/' + dist, "script": dist ? "app.js" : "index.js", "args": `cfgenv=${cfgenv} mode=stand-alone env=${env}`, "node_args": "--harmony", "exec_mode": "fork_mode" };
let apps = [ masterApp, ]
let servers = require(root + '/logicServer/game-server/' + dist + 'config/' + cfgenv + '/servers'); servers = servers[env]; if (!servers) { throw new Error(' no servers env ' + env); }
let serverMap = {}, slist, i, l, server; for (let serverType in servers) { slist = servers[serverType]; for (i = 0, l = slist.length; i < l; i++) { server = slist[i]; server.serverType = serverType; serverMap[server.id] = server; } } for (const sKey in serverMap) { server = serverMap[sKey]; let cmd = 'env=' + env + ' '; let args = ''; for (const key in server) { if (key === 'args') { args = server[key]; continue; } cmd += util.format(' %s=%s ', key, server[key]); } serverMap[sKey] = { name: cfgenv + "-" + sKey, cwd: argroot + '/logicServer/game-server/' + dist, script: dist ? "app.js" : 'index.js', args: cmd, node_args: " " + args, exec_mode: "fork_mode" }; apps.push(serverMap[sKey]); }
let filename = '/pm2_' + generateType + '_' + cfgenv + '_' + env + '.json'; fs.writeFileSync(__dirname + filename, JSON.stringify({apps}, null, 4)); console.log('generate success', filename, apps.map(val => val.name));
let conns = apps.filter(v => v.name.indexOf('connector') >= 0) filename = '/pm2_' + generateType + '_' + cfgenv + '_' + env + '_only_conn_process.json'; fs.writeFileSync(__dirname + filename, JSON.stringify({apps: conns}, null, 4)); console.log('generate _only_conn_master_process success', filename, conns.map(val => val.name));
filename = '/pm2_' + generateType + '_' + cfgenv + '_' + env + '_only_logic_process.json'; apps = apps.filter(v => v.name.indexOf('connector') === -1 && v.name.indexOf('master') === -1) fs.writeFileSync(__dirname + filename, JSON.stringify({apps}, null, 4)); console.log('generate only_logic_process success', filename, apps.map(val => val.name));
|