ninwa/ninwa.js

48 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-02-15 04:33:19 +01:00
const watchers = require('./libs/watchers.js');
const util = require('./libs/util.js');
2022-02-15 04:33:19 +01:00
const logger = require('./libs/logger.js');
const packageJSON = require('./package.json');
const INTERRUPTS = ['SIGINT', 'SIGTERM'];
global.config = process.argv[2] || __dirname + '/config.json';
handleInterrupts();
2022-02-15 04:33:19 +01:00
util.fileExists(config)
.catch((err) => {
logger.error('given config file \'' + config + '\' does not exist');
logger.error(err);
exit(1);
})
.then((result) => {
global.config = require(result.path);
global.config.path = result.path;
})
.then(logger.initialize)
.then(() => {
logger.info(packageJSON.name + ' ' + packageJSON.version + ' starting...');
})
.then(watchers.initialize)
2022-02-15 04:33:19 +01:00
.then(watchers.start)
.catch((err) => {
logger.error(err);
exit(1);
2022-02-15 04:33:19 +01:00
});
function exit(code) {
code = code || 0;
logger.info(packageJSON.name + ' ' + packageJSON.version + ' exiting with code \'' + code + '\'...');
process.exit(code);
}
function handleInterrupts() {
for (var index = 0; index < INTERRUPTS.length; index++) {
process.once(INTERRUPTS[index], (code) => {
watchers.stop()
.then(exit(code))
.catch(exit(code));
});
}
}