Added support for nested configs via env
This commit is contained in:
parent
6cbc323005
commit
8921d0502e
3 changed files with 22 additions and 10 deletions
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
var util = require('util'),
|
||||
common = require('../common'),
|
||||
Memory = require('./memory').Memory;
|
||||
|
||||
//
|
||||
|
@ -17,9 +18,15 @@ var util = require('util'),
|
|||
var Env = exports.Env = function (options) {
|
||||
Memory.call(this, options);
|
||||
|
||||
this.type = 'env';
|
||||
this.readOnly = true;
|
||||
this.options = options || [];
|
||||
options = options || {};
|
||||
this.type = 'env';
|
||||
this.readOnly = true;
|
||||
this.filter = options.filter || [];
|
||||
this.separator = options.separator || '';
|
||||
// Backwards compatibility
|
||||
if (options instanceof Array) {
|
||||
this.filter = options;
|
||||
}
|
||||
};
|
||||
|
||||
// Inherit from the Memory store
|
||||
|
@ -43,9 +50,13 @@ Env.prototype.loadEnv = function () {
|
|||
|
||||
this.readOnly = false;
|
||||
Object.keys(process.env).filter(function (key) {
|
||||
return !self.options.length || self.options.indexOf(key) !== -1;
|
||||
return !self.filter.length || self.filter.indexOf(key) !== -1;
|
||||
}).forEach(function (key) {
|
||||
self.set(key, process.env[key]);
|
||||
if (self.separator) {
|
||||
self.set(common.key.apply(common, key.split(self.separator)), process.env[key]);
|
||||
} else {
|
||||
self.set(key, process.env[key]);
|
||||
}
|
||||
});
|
||||
|
||||
this.readOnly = true;
|
||||
|
|
|
@ -183,7 +183,7 @@ Memory.prototype.merge = function (key, value) {
|
|||
}
|
||||
|
||||
return Object.keys(value).every(function (nested) {
|
||||
return self.merge(fullKey + ':' + nested, value[nested]);
|
||||
return self.merge(common.key(fullKey, nested), value[nested]);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -207,4 +207,4 @@ Memory.prototype.reset = function () {
|
|||
//
|
||||
Memory.prototype.loadSync = function () {
|
||||
return this.store || {};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -16,8 +16,9 @@ vows.describe('nconf/stores/env').addBatch({
|
|||
"should have the correct methods defined": function (env) {
|
||||
assert.isFunction(env.loadSync);
|
||||
assert.isFunction(env.loadEnv);
|
||||
assert.isArray(env.options);
|
||||
assert.lengthOf(env.options, 0);
|
||||
assert.isArray(env.filter);
|
||||
assert.lengthOf(env.filter, 0);
|
||||
assert.equal(env.separator, '');
|
||||
}
|
||||
}
|
||||
}).export(module);
|
||||
}).export(module);
|
||||
|
|
Loading…
Reference in a new issue