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); }