-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcli.js
executable file
·61 lines (51 loc) · 2.07 KB
/
cli.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
#!/usr/bin/env node
var fs = require("fs");
var _ = require("lodash");
var dns = require("native-dns");
var nomnom = require("nomnom");
var pkg = require([__dirname, "package"].join("/"));
var utils = require([__dirname, "lib", "utils"].join("/"));
var logger = require([__dirname, "lib", "logger"].join("/"));
var statsd = require([__dirname, "lib", "statsd"].join("/"));
var Server = require([__dirname, "lib", "server"].join("/"));
var API = require([__dirname, "lib", "api"].join("/"));
// get configuration options
var configuration = {};
var available_configs = fs.readdirSync([__dirname, "config"].join("/"));
_.each(available_configs, function(config){
var config_name = config.split(".")[0];
configuration[config_name] = require([__dirname, "config", config].join("/"));
});
// set options
var disk_options = _.defaults(_.clone(configuration.default), _.clone(configuration.disk));
var memory_options = _.defaults(_.clone(configuration.default), _.clone(configuration.memory));
var mongo_options = _.defaults(_.clone(configuration.default), _.clone(configuration.mongo));
var redis_options = _.defaults(_.clone(configuration.default), _.clone(configuration.redis));
var s3_options = _.defaults(_.clone(configuration.default), _.clone(configuration.s3));
// initialize commands
nomnom.command("disk").options(disk_options);
nomnom.command("memory").options(memory_options);
nomnom.command("mongo").options(mongo_options);
nomnom.command("redis").options(redis_options);
nomnom.command("s3").options(s3_options);
// set script name
nomnom.script("quarry");
// parse options
var options = nomnom.parse(utils.parse_env_vars());
// init logger
logger.initialize(_.pick(options, [
"log-level",
"redis-log-host",
"redis-log-port",
]));
logger.log("info", ["Starting Quarry version", pkg.version].join(" "));
// init statsd
statsd.initialize(_.pick(options, ["statsd-host", "statsd-port"]));
options.cli = true;
// initialize and start server
var server = new Server(options);
server.listen(function(){
// initialize and start API
var api = new API(options);
api.listen();
});