diff --git a/packages/bower-config/lib/util/expand.js b/packages/bower-config/lib/util/expand.js index f3d453fd3..303fadef2 100644 --- a/packages/bower-config/lib/util/expand.js +++ b/packages/bower-config/lib/util/expand.js @@ -43,6 +43,9 @@ function doEnvReplaceStr (f) { function envReplace(config) { var envReplaced = {}; + if ( lang.isArray(config) ) { + envReplaced = []; + } object.forOwn(config, function (value, key) { @@ -63,6 +66,9 @@ function envReplace(config) { if ( lang.isPlainObject(value) ) { envReplaced[key] = envReplace(value); } + else if ( lang.isArray(value) ) { + envReplaced[key] = envReplace(value); + } else if ( lang.isString(value) ) { envReplaced[key] = doEnvReplaceStr(value); } diff --git a/packages/bower-config/test/assets/env-variables-values/.bowerrc b/packages/bower-config/test/assets/env-variables-values/.bowerrc index dae163d47..339447ed9 100644 --- a/packages/bower-config/test/assets/env-variables-values/.bowerrc +++ b/packages/bower-config/test/assets/env-variables-values/.bowerrc @@ -4,7 +4,12 @@ }, "storage" : { "packages" : "${_BOWERRC_MY_PACKAGES}", - "registry" : "~/.bower-test/registry" + "registry" : { + "register": "~/.bower-test/registry", + "search": [ + "${_BOWERRC_MY_USER}:${_BOWERRC_MY_PASS}" + ] + } }, "tmp" : "${_BOWERRC_MY_TMP}" } diff --git a/packages/bower-config/test/test.js b/packages/bower-config/test/test.js index 967eaf3f2..d9a810e28 100644 --- a/packages/bower-config/test/test.js +++ b/packages/bower-config/test/test.js @@ -224,10 +224,13 @@ describe('Allow ${ENV} variables in .bowerrc', function() { it('sets values from process.env', function() { process.env._BOWERRC_MY_PACKAGES = 'a'; process.env._BOWERRC_MY_TMP = '/tmp/b'; + process.env._BOWERRC_MY_USER = 'username'; + process.env._BOWERRC_MY_PASS = 'password'; var config = require('../lib/Config').read('test/assets/env-variables-values'); assert.equal('a', config.storage.packages); assert.equal('/tmp/b', config.tmp); + assert.equal('username:password', config.storage.registry.search[0]); assert.equal('${_myshellvar}', config.scripts.postinstall); }); }); @@ -238,7 +241,7 @@ describe('untildify paths in .bowerrc', function() { var config = require('../lib/Config').read('test/assets/env-variables-values'); var untildify = require('untildify'); - assert.equal(untildify('~/.bower-test/registry') , config.storage.registry); + assert.equal(untildify('~/.bower-test/registry') , config.storage.registry.register); }); });