pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
59 lines (55 loc) • 1.62 kB
JavaScript
;
const path = require('path');
const chalk = require('chalk');
const debug = require('debug')('pandora:cli:list');
const table = require('table').table;
const PANDORA_LIB_HOME = path.join(__dirname, '../dist');
const {consoleLogger} = require(path.join(PANDORA_LIB_HOME, 'universal/LoggerBroker'));
const {send, isDaemonRunning} = require(path.join(PANDORA_LIB_HOME, 'daemon/DaemonHandler'));
const CONST = require(path.join(PANDORA_LIB_HOME, './const'));
const State = CONST.State;
exports.command = 'list';
exports.desc = 'List all applications';
exports.handler = function () {
isDaemonRunning().then((isRunning) => {
if (!isRunning) {
consoleLogger.info('Daemon is not running yet');
process.exit(0);
return;
}
send('list', {}, (err, data) => {
if (err) {
consoleLogger.error(err);
process.exit(1);
return;
}
const tableData = [
[
'AppName',
'Mode',
'PID',
'AppDir',
'State',
'Uptime',
'Restart Count',
]
];
debug(data);
for (const app of data) {
let state = State[app.state];
state = (state === 'complete' ? chalk.green('Running') : chalk.red(state)).replace(/^.{1}/, (firstChar) => firstChar.toUpperCase());
tableData.push([
app.appName,
app.mode,
app.pids.join(','),
app.appDir,
state,
app.uptime,
Math.max(0, app.startCount - 1)
]);
}
console.log(table(tableData));
process.exit(0);
});
});
};