/
server.js
47 lines (41 loc) · 1.42 KB
/
server.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
var fs = require('fs');
var argv = require('optimist').argv;
module.exports = function servinator(server, configArgName, envVarName) {
configArgName = configArgName || 'config';
envVarName = envVarName || 'CONFIG_FILE';
var configFile = argv[configArgName] || process.env[envVarName];
if (!configFile) {
process.stderr.write(
"No configuration specified! Use the --" + configArgName + " " +
"flag or the " + envVarName + " environment variable to " +
"specify a configuration file\n");
process.exit(1);
} else if (!fs.existsSync(configFile)) {
process.stderr.write(
"Config file '" + configFile + "' " +
"doesn't actually exist. That's not very nice. Please give " +
"me a config which does exist.\n");
process.exit(1);
}
var config = JSON.parse(fs.readFileSync(configFile));
if (config.port === undefined) {
process.stderr.write("Configuration must have a key 'port' with a " +
"numerical value, specifying the TCP port the server should listen on\n");
process.exit(1);
}
var httpServer = new http.Server();
if (server.length == 2) {
server(config, function(err, app) {
if (err) {
process.stderr.write(err + "\n");
process.exit(1);
}
httpServer.on('request', app);
app.listen(config.port);
});
} else {
httpServer.on('request', server(config));
httpServer.listen(config.port);
}
return httpServer;
};