import { DEFAULT_USERNAME, DEFAULT_PWD, DEFAULT_MASTER_HOST, DEFAULT_MASTER_PORT } from '../utils/constants'; import { connectToMaster } from '../utils/utils'; import {AdminClient} from 'pinusmod-admin'; import * as colors from 'colors'; // @ts-ignore import * as pc from 'pretty-columns'; import { ConsoleModule as co } from '../../lib/modules/console'; import { Command } from 'commander'; export default function (program: Command) { program.command('list') .description('list the servers') .option('-u, --username ', 'administration user name', DEFAULT_USERNAME) .option('-p, --password ', 'administration password', DEFAULT_PWD) .option('-h, --host ', 'master server host', DEFAULT_MASTER_HOST) .option('-P, --port ', 'master server port', (value)=>parseInt(value), DEFAULT_MASTER_PORT) .action(function (opts) { list(opts); }); } /** * List pinus processes. * * @param {Object} opts options for `list` operation */ function list(opts: any) { let id = 'pinus_list_' + Date.now(); connectToMaster(id, opts, function (client: AdminClient) { client.request(co.moduleId, { signal: 'list' }, function (err: Error, data: any) { if (err) { console.error(err); } let servers: any[] = []; for (let key in data.msg) { servers.push(data.msg[key]); } let comparer = function (a: any, b: any) { if (a.serverType < b.serverType) { return -1; } else if (a.serverType > b.serverType) { return 1; } else if (a.serverId < b.serverId) { return -1; } else if (a.serverId > b.serverId) { return 1; } else { return 0; } }; servers.sort(comparer); let rows: string[][] = []; rows.push([ colors.red('serverId'), colors.blue('serverType'), colors.green('pid'), colors.cyan('rss(M)'), colors.magenta('heapTotal(M)'), colors.white('heapUsed(M)'), colors.yellow('uptime(m)')]); servers.forEach(function (server) { rows.push([server.serverId, server.serverType, server.pid, server.rss, server.heapTotal, server.heapUsed, server.uptime]); }); pc.output(rows); process.exit(0); }); }); }