remex/remex.js

49 lines
1.3 KiB
JavaScript

const logger = require('./libs/logger.js');
const packageJSON = require('./package.json');
const server = require('./libs/server.js');
const path = require('path');
const INTERRUPTS = ['beforeExit', 'SIGINT', 'SIGTERM'];
main();
async function main() {
let configPath = path.resolve(process.argv[2] || __dirname + '/config.json');
try {
global.config = require(configPath);
} catch (err) {
logger.warn('could not read config file at \'' + configPath + '\'');
}
logger.initialize();
handleExit();
logger.info("launching " + packageJSON.name + " " + packageJSON.version + "...");
try {
await server.start();
} catch (err) {
exit(err);
}
};
function handleExit() {
for (var index = 0; index < INTERRUPTS.length; index++) {
process.on(INTERRUPTS[index], async (code) => {
exit(undefined, code);
});
}
}
function exit(err, code) {
if (code === undefined) {
code = 0;
if (err !== undefined) {
code = 1;
}
}
if (err) {
logger.error(err);
logger.error(packageJSON.name + ' ' + packageJSON.version + ' ended due to an error');
} else {
logger.info(packageJSON.name + ' ' + packageJSON.version + ' shutting down gracefully')
}
process.exit(code);
}