forked from cncjs/cncjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cnc
executable file
·69 lines (58 loc) · 1.88 KB
/
cnc
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
65
66
67
68
69
#!/usr/bin/env node
process.env.NODE_ENV = 'production';
var _ = require('lodash');
var fs = require('fs');
var path = require('path');
var webappengine = require('webappengine');
var program = require('commander');
var pkg = require('../package.json');
require('colors');
program
.version(pkg.version)
.usage('[options]')
.option('-p, --port <port>', 'set listen port (default: 8000)')
.option('-H, --host <host>', 'set listen address or hostname (default: 0.0.0.0)')
.option('-b, --backlog <backlog>', 'set listen backlog (default: 511)')
.option('-c, --config <filename>', 'set config file (default: ~/.cncrc)')
.option('-d, --debug', 'run in debug mode')
.parse(process.argv);
if (program.debug) {
process.env.NODE_ENV = 'development';
}
var settings = require('../app/config/settings');
var server = require('../app/server');
// Overrides defaults
_.set(settings, 'port', program.port || settings.port);
_.set(settings, 'host', program.host || settings.host);
_.set(settings, 'backlog', program.backlog || settings.backlog);
{ // Load configuration settings
var cncrc = settings['cncrc'];
if (program.config) {
cncrc = path.resolve(program.config);
}
try {
var cnc = JSON.parse(fs.readFileSync(cncrc, 'utf8'));
if (!(_.isObject(cnc))) {
console.log('Check your configuration file to ensure it contain valid settings.'.bold.red);
console.log(cnc);
process.exit(1);
}
settings['cncrc'] = cncrc;
settings['cnc'] = _.extend({}, settings['cnc'], cnc);
}
catch(err) {
}
}
var options = {
port: settings.port,
routes: [
{
type: 'server',
route: '/',
// An absolute path is recommended to use
server: path.resolve(__dirname, '../app/app')
}
]
};
webappengine(options)
.on('ready', server);