mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Widen support for env var to use ${} or $() syntax
This commit is contained in:
		@@ -37,7 +37,8 @@ function diffNodes(oldNode,newNode) {
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var EnvVarPropertyRE = /^\$\((\S+)\)$/;
 | 
			
		||||
var EnvVarPropertyRE_old = /^\$\((\S+)\)$/;
 | 
			
		||||
var EnvVarPropertyRE = /^\${(\S+)}$/;
 | 
			
		||||
 | 
			
		||||
function mapEnvVarProperties(obj,prop) {
 | 
			
		||||
    if (Buffer.isBuffer(obj[prop])) {
 | 
			
		||||
@@ -47,11 +48,9 @@ function mapEnvVarProperties(obj,prop) {
 | 
			
		||||
            mapEnvVarProperties(obj[prop],i);
 | 
			
		||||
        }
 | 
			
		||||
    } else if (typeof obj[prop] === 'string') {
 | 
			
		||||
        var m;
 | 
			
		||||
        if ( (m = EnvVarPropertyRE.exec(obj[prop])) !== null) {
 | 
			
		||||
            if (process.env.hasOwnProperty(m[1])) {
 | 
			
		||||
                obj[prop] = process.env[m[1]];
 | 
			
		||||
            }
 | 
			
		||||
        if (obj[prop][0] === "$" && (EnvVarPropertyRE_old.test(obj[prop]) || EnvVarPropertyRE.test(obj[prop])) ) {
 | 
			
		||||
            var envVar = obj[prop].substring(2,obj[prop].length-1);
 | 
			
		||||
            obj[prop] = process.env.hasOwnProperty(envVar)?process.env[envVar]:obj[prop];
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        for (var p in obj[prop]) {
 | 
			
		||||
@@ -203,7 +202,7 @@ module.exports = {
 | 
			
		||||
        var linkMap = {};
 | 
			
		||||
 | 
			
		||||
        var changedTabs = {};
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        // Look for tabs that have been removed
 | 
			
		||||
        for (id in oldConfig.flows) {
 | 
			
		||||
            if (oldConfig.flows.hasOwnProperty(id) && (!newConfig.flows.hasOwnProperty(id))) {
 | 
			
		||||
 
 | 
			
		||||
@@ -35,10 +35,17 @@ describe('flows/util', function() {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe('#mapEnvVarProperties',function() {
 | 
			
		||||
        it('handles ENV substitutions in an object', function() {
 | 
			
		||||
        before(function() {
 | 
			
		||||
            process.env.foo1 = "bar1";
 | 
			
		||||
            process.env.foo2 = "bar2";
 | 
			
		||||
            process.env.foo3 = "bar3";
 | 
			
		||||
        })
 | 
			
		||||
        after(function() {
 | 
			
		||||
            delete process.env.foo1;
 | 
			
		||||
            delete process.env.foo2;
 | 
			
		||||
            delete process.env.foo3;
 | 
			
		||||
        })
 | 
			
		||||
        it('handles ENV substitutions in an object - $()', function() {
 | 
			
		||||
            var foo = {a:"$(foo1)",b:"$(foo2)",c:{d:"$(foo3)"}};
 | 
			
		||||
            for (var p in foo) {
 | 
			
		||||
                if (foo.hasOwnProperty(p)) {
 | 
			
		||||
@@ -47,6 +54,15 @@ describe('flows/util', function() {
 | 
			
		||||
            }
 | 
			
		||||
            foo.should.eql({ a: 'bar1', b: 'bar2', c: { d: 'bar3' } } );
 | 
			
		||||
        });
 | 
			
		||||
        it('handles ENV substitutions in an object - ${}', function() {
 | 
			
		||||
            var foo = {a:"${foo1}",b:"${foo2}",c:{d:"${foo3}"}};
 | 
			
		||||
            for (var p in foo) {
 | 
			
		||||
                if (foo.hasOwnProperty(p)) {
 | 
			
		||||
                    flowUtil.mapEnvVarProperties(foo,p);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            foo.should.eql({ a: 'bar1', b: 'bar2', c: { d: 'bar3' } } );
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe('#diffNodes',function() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user