read config also from environment variables, merge on top of json file config

This commit is contained in:
Riku Rouvila
2015-11-24 20:21:31 +02:00
parent 35fc0b9ea8
commit a20b1f6cd2
5 changed files with 20 additions and 25 deletions

View File

@@ -2,7 +2,8 @@
"all": {
"slack": {
"token": "",
"channels": ""
"privateChannel": "",
"publicChannel": ""
},
"github": {
"token": ""

View File

@@ -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==]"
}
}
}

View File

@@ -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);

View File

@@ -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",

View File

@@ -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) {