pomelo-upgrade
Version:
126 lines (114 loc) • 3.09 kB
JavaScript
;
const os = require('os');
const admin = require('pomelo-admin-upgrade');
const utils = require('./utils');
const Constants = require('./constants');
const pathUtil = require('./pathUtil');
const starter = require('../master/starter');
const logger = require('pomelo-logger-upgrade').getLogger('pomelo', __filename);
const pro = module.exports;
/**
* Load admin modules
*/
pro.loadModules = function(self, consoleService)
{
// load app register modules
const _modules = self.app.get(Constants.KEYWORDS.MODULE);
if (!_modules)
{
return;
}
const modules = [];
for (const m in _modules)
{
modules.push(_modules[m]);
}
let record, moduleId, module;
for (let i = 0, l = modules.length; i < l; i++)
{
record = modules[i];
if (typeof record.module === 'function')
{
module = record.module(record.opts, consoleService);
}
else
{
module = record.module;
}
moduleId = record.moduleId || module.moduleId;
if (!moduleId)
{
logger.warn('ignore an unknown module.');
continue;
}
consoleService.register(moduleId, module);
self.modules.push(module);
}
};
pro.startModules = function(modules, cb)
{
// invoke the start lifecycle method of modules
if (!modules)
{
return;
}
startModule(null, modules, 0, cb);
};
/**
* Append the default system admin modules
*/
pro.registerDefaultModules = function(isMaster, app, closeWatcher)
{
if (!closeWatcher)
{
if (isMaster)
{
app.registerAdmin(require('../modules/masterwatcher'), {app: app});
}
else
{
app.registerAdmin(require('../modules/monitorwatcher'), {app: app});
}
}
app.registerAdmin(admin.modules.watchServer, {app: app});
app.registerAdmin(require('../modules/console'), {
app : app,
starter : starter});
if (app.enabled('systemMonitor'))
{
if (os.platform() !== Constants.PLATFORM.WIN)
{
app.registerAdmin(admin.modules.systemInfo);
app.registerAdmin(admin.modules.nodeInfo);
}
app.registerAdmin(admin.modules.monitorLog, {path: pathUtil.getLogPath(app.getBase())});
app.registerAdmin(admin.modules.scripts, {
app : app,
path : pathUtil.getScriptPath(app.getBase())
});
if (os.platform() !== Constants.PLATFORM.WIN)
{
app.registerAdmin(admin.modules.profiler);
}
}
};
const startModule = function(err, modules, index, cb)
{
if (err || index >= modules.length)
{
utils.invokeCallback(cb, err);
return;
}
const module = modules[index];
if (module && typeof module.start === 'function')
{
module.start(function(err)
{
startModule(err, modules, index + 1, cb);
});
}
else
{
startModule(err, modules, index + 1, cb);
}
};