-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
64 lines (59 loc) · 2.17 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* {{APPLICATION NAME}} */
// n.b. this code is just a skeleton
/* IMPORTS */
// import built-in & npm modules
const fs = require("fs");
const path = require("path");
const http = require("http");
const express = require("express");
const mongodb = require('mongodb');
const rn = require('random-number');
const readline = require("readline");
const body_parser = require("body-parser");
/* ENVIRONMENT */
// set up environment
global.args = process.argv.slice(2);
global.env = process.argv.slice(2)[0] == "prod" ? "prod" : "dev";
global.http_port = global.env == "dev" ? 8000 : /* [[HTTP_PORT]] */ 3000;
global.ws_port = global.env == "dev" ? 8080 : /* [[WEBSOCKET_PORT]] */ 3001;
global.mdb_port = global.env == "dev" ? 27017 : /* [[MONGO_PORT]] */ 3002;
global.mdb_db = /* [[MONGO_DBNAME]] */ "node-scaffold";
/* MODULES */
// import application modules
global.m = {};
const modules = {};
fs.readdirSync(path.join(__dirname, "modules")).forEach(module_id => {
if (module_id[0] != '.' && module_id[0] != '_') {
module_id = module_id.slice(0, module_id.length - 3);
modules[module_id] = require(`./modules/${module_id}.js`);
if (modules[module_id].hasOwnProperty('api') && modules[module_id].api &&
typeof modules[module_id].api === 'object' && modules[module_id].api !== null) {
if (module_id == "utils") modules[module_id]._enable_api();
global.m[module_id] = modules[module_id].api;
}
}
});
/* MAIN */
console.log(/* [[APPLICATION_NAME]] */ "NODE SCAFFOLD");
modules.utils.init("utils");
for (var module_id in modules) {
if (modules[module_id].hasOwnProperty('init') && modules[module_id].init &&
typeof modules[module_id].init === 'function' && module_id != "utils")
modules[module_id].init(module_id);
}
process.on('exit', _ => {
console.log('[process] exit');
});
process.on('SIGINT', _ => {
console.log('[process] interrupt');
modules.main.api.exit();
});
process.on('SIGUSR1', _ => {
console.log('[process] restart 1');
modules.main.api.exit();
});
process.on('SIGUSR2', _ => {
console.log('[process] restart 2');
modules.main.api.exit();
});
modules.utils.delay(modules.main.main, 500);