aboutsummaryrefslogtreecommitdiff
path: root/src/DillerConfig.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/DillerConfig.js')
-rw-r--r--src/DillerConfig.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/DillerConfig.js b/src/DillerConfig.js
new file mode 100644
index 0000000..84afe42
--- /dev/null
+++ b/src/DillerConfig.js
@@ -0,0 +1,67 @@
+var fs = require('fs');
+var bunyan = require('bunyan');
+
+function isProd() {
+ return process.env.NODE_ENV == 'prod';
+}
+
+var mqttUrl = process.env.MQTT_URL || 'mqtt://trygvis.io';
+
+var postgresqlConfig = {
+ host: process.env.DB_HOST || '/var/run/postgresql',
+ database: process.env.DB_DATABASE || 'diller',
+ user: process.env.DB_USER || 'diller',
+ password: process.env.DB_PASSWORD || 'diller'
+};
+
+var log;
+
+function configureLogging(app) {
+ if (log) {
+ return;
+ }
+
+ var cfg = {
+ name: app
+ };
+
+ if (isProd()) {
+ cfg.streams = [
+ {
+ level: 'warn',
+ stream: process.stdout
+ },
+ {
+ level: 'debug',
+ path: 'log/diller-' + app + '.log'
+ }
+ ];
+
+ var stat;
+ try {
+ stat = fs.lstatSync('log');
+ } catch (e) {
+ // Assume this to to be ENOENT
+ fs.mkdirSync('log');
+ }
+ if (stat && !stat.isDirectory()) {
+ throw 'Not a directory: log';
+ }
+ }
+
+ log = bunyan.createLogger(cfg);
+}
+
+function DillerConfig() {
+ return {
+ isProd: isProd,
+ mqttUrl: mqttUrl,
+ postgresqlConfig: postgresqlConfig,
+ configureLogging: configureLogging,
+ log: function () {
+ return log;
+ }
+ };
+}
+
+module.exports = DillerConfig;