diff --git a/README.md b/README.md index ec8680f..297ffc9 100644 --- a/README.md +++ b/README.md @@ -191,11 +191,12 @@ Responsible for loading the values parsed from `process.env` into the configurat var dbHost = nconf.get('database:host'); // - // Or use both options + // Or use all options // nconf.env({ separator: '__', - whitelist: ['database__host', 'only', 'load', 'these', 'values'] + match: /^whatever_matches_this_will_be_whitelisted/ + whitelist: ['database__host', 'only', 'load', 'these', 'values', 'if', 'whatever_doesnt_match_but_is_whitelisted_gets_loaded_too'] }); var dbHost = nconf.get('database:host'); ``` diff --git a/lib/nconf/stores/env.js b/lib/nconf/stores/env.js index e73026e..3d7a7f9 100644 --- a/lib/nconf/stores/env.js +++ b/lib/nconf/stores/env.js @@ -21,6 +21,7 @@ var Env = exports.Env = function (options) { options = options || {}; this.type = 'env'; this.readOnly = true; + this.match = options.match this.whitelist = options.whitelist || []; this.separator = options.separator || ''; if (options instanceof Array) { @@ -52,7 +53,13 @@ Env.prototype.loadEnv = function () { this.readOnly = false; Object.keys(process.env).filter(function (key) { - return !self.whitelist.length || self.whitelist.indexOf(key) !== -1; + if(self.match && self.whitelist.length) { + return key.match(self.match) || self.whitelist.indexOf(key) !== -1 + } else if (self.match) { + return key.match(self.match) + } else { + return !self.whitelist.length || self.whitelist.indexOf(key) !== -1 + } }).forEach(function (key) { if (self.separator) { self.set(common.key.apply(common, key.split(self.separator)), process.env[key]);