From a20b1f6cd277bd2cf8f2bc2234d5ffef094a31fc Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Tue, 24 Nov 2015 20:21:31 +0200 Subject: [PATCH] read config also from environment variables, merge on top of json file config --- config.template.json | 3 ++- config/config.production.ejson | 20 -------------------- lib/config.js | 16 +++++++++++++++- package.json | 2 +- services/slack.js | 4 ++-- 5 files changed, 20 insertions(+), 25 deletions(-) delete mode 100644 config/config.production.ejson diff --git a/config.template.json b/config.template.json index 2647298..2632874 100644 --- a/config.template.json +++ b/config.template.json @@ -2,7 +2,8 @@ "all": { "slack": { "token": "", - "channels": "" + "privateChannel": "", + "publicChannel": "" }, "github": { "token": "" diff --git a/config/config.production.ejson b/config/config.production.ejson deleted file mode 100644 index 1e1d0e9..0000000 --- a/config/config.production.ejson +++ /dev/null @@ -1,20 +0,0 @@ -{ - "_public_key": "94f3af35ad208d7bc7e3ddf1f9d181d090e3a1c74f9d56851c4f0f1efb04b571", - "newrelic_key": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:Pdy9ugoJ3SglDvX6lGz2AyS2eKHHPm2E:uSzlBglVbzdbPPy3Pp/UMiJQn+6hhx/d2ohg94E/zvoS+8Jtl/2tPf6CQ3uFtbFvymYuDAwm+Fs=]", - "all": { - "slack": { - "token": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:aXVSV+o3beRrV7ebgxf7c5D04RVnxu7s:Smhu1k+kH9IrlwUwzIuk2sJ/m+FuyLAbO4Da2PF0rIciwjJM881lM8GU+NcsxbuIUXMgzI1tRw/38hAAq6ISBA==]", - "private_channel": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:UMpbg7pcRg6nVYLQZV8r6VCRyKQ+9gKd:DapGJCT2/aOzLAn00EfTSMfHGV+/pSrzZw==]", - "public_channel": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:y8iIiUNS37cIAM7TBtExRmI9Cvn+LtRT:GjiDGA7mCUp5AaeKD4nnu9Qry9OUecI0DA==]" - }, - "github": { - "token": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:EnbOnnCLRxPi7iZ1pWV8qVJc+avDKS9u:MZkoAW0i6SUhgZFBREyRN6jBGQ9ZqeslG45XHJpCKm3Spi7VxVG1xv75vCqRA0KW0Uzs7VwQaZo=]" - }, - "twitter": { - "consumerKey": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:+1l4+Wdfd/0kegV1Xwu237xJut/XPRUi:fNTezQs1RJwTRZGlwm3Z3B6tV44H9nZUM/w7zYjyVyK8MpoX3NmhW68=]", - "consumerSecret": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:YbWwBsImZi2bxNSB9byt9faJzS5Ug8Sd:Y4rZWaQJaIHfuyOFBIXJHCKxlfxrid14zTM7yECumhX5MZBTFCyAH5LijJCuCqm9PtZElEFW2nOrsLQBtnyF1I3V]", - "token": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:3wRXcXnXmU5qekVuryuXT/sq1MuloOTe:TdGkIi7WEPXweAaVsLUjFekFrEHiTZuW7jr8Q4F8FLTjoXpHkwBD9f4SRnxQ4BC+CRRoaiOBe6zzTb99SWIDCZPS]", - "tokenSecret": "EJ[1:8U8evsrlrGhenQ0Cv3XQR0SAYe6atL3PVKdj36Ue6SU=:DwFvhyEfkpgRXlcuXVh6iHZXbPnWwRRV:q+RFJ0SXe5wkiccmM7n8pWJNf62ByMW6IXLU2tZkpHEo2zosU+eMAkXtF52x5vJiYaWrIsxUcJeYzLFyEQ==]" - } - } -} \ No newline at end of file diff --git a/lib/config.js b/lib/config.js index 7e06070..0675bdf 100644 --- a/lib/config.js +++ b/lib/config.js @@ -4,4 +4,18 @@ var _ = require('lodash'); var config = require('../config.json'); var env = process.env.NODE_ENV || 'development'; -module.exports = _.merge({}, config.all, config[env]); +// TWITTER_CONSUMER_KEY => twitter.consumerKey +function toPath(key) { + var parts = key.split('_'); + + var namespace = parts[0].toLowerCase(); + var option = _.camelCase(_.tail(parts).join('_')) + + return option ? [namespace, option].join('.') : namespace; +} + +var envVars = _.reduce(process.env, function(memo, value, key) { + return _.set(memo, toPath(key), value); +}, {}); + +module.exports = _.merge({}, config.all, config[env], envVars); diff --git a/package.json b/package.json index 28680e6..82d865f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "bluebird": "^2.9.3", "body-parser": "^1.10.1", "express": "^4.11.0", - "lodash": "3.0.0", + "lodash": "^3.10.1", "morgan": "^1.5.1", "node-twitter": "0.5.2", "superagent": "^0.21.0", diff --git a/services/slack.js b/services/slack.js index a0c3704..532d606 100644 --- a/services/slack.js +++ b/services/slack.js @@ -15,7 +15,7 @@ module.exports = { request .post('https://koodiklinikka.slack.com/api/users.admin.invite') .field('email', email) - .field('channels', config.slack.public_channel) + .field('channels', config.slack.publicChannel) .field('token', config.slack.token) .field('set_active', 'true') .end(function(error, response){ @@ -42,7 +42,7 @@ module.exports = { request .post('https://koodiklinikka.slack.com/api/chat.postMessage') .field('text', message) - .field('channel', config.slack.private_channel) + .field('channel', config.slack.privateChannel) .field('token', config.slack.token) .end(function(error, response){ if(error) {