merge to latest

This commit is contained in:
Nick O'Leary
2018-05-23 12:45:29 +01:00
31 changed files with 444 additions and 105 deletions

View File

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

View File

@@ -73,7 +73,8 @@ var localfilesystem = {
var defaultPackage = {
"name": "node-red-project",
"description": "A Node-RED Project",
"version": "0.0.1"
"version": "0.0.1",
"private": true
};
return util.writeFile(packageFile,JSON.stringify(defaultPackage,"",4));
}

View File

@@ -303,6 +303,23 @@ function setMessageProperty(msg,prop,value,createMissing) {
}
}
function evaluteEnvProperty(value) {
if (/^\${[^}]+}$/.test(value)) {
// ${ENV_VAR}
value = value.substring(2,value.length-1);
value = process.env.hasOwnProperty(value)?process.env[value]:""
} else if (!/\${\S+}/.test(value)) {
// ENV_VAR
value = process.env.hasOwnProperty(value)?process.env[value]:""
} else {
// FOO${ENV_VAR}BAR
value = value.replace(/\${([^}]+)}/g, function(match, v) {
return process.env.hasOwnProperty(v)?process.env[v]:""
});
}
return value;
}
function evaluateNodeProperty(value, type, node, msg) {
if (type === 'str') {
return ""+value;
@@ -328,6 +345,8 @@ function evaluateNodeProperty(value, type, node, msg) {
} else if (type === 'jsonata') {
var expr = prepareJSONataExpression(value,node);
return evaluateJSONataExpression(expr,msg);
} else if (type === 'env') {
return evaluteEnvProperty(value);
}
return value;
}
@@ -340,6 +359,9 @@ function prepareJSONataExpression(value,node) {
expr.assign('globalContext',function(val) {
return node.context().global.get(val);
});
expr.assign('env', function(val) {
return process.env[val];
})
expr.registerFunction('clone', cloneMessage, '<(oa)-:o>');
expr._legacyMode = /(^|[^a-zA-Z0-9_'"])msg([^a-zA-Z0-9_'"]|$)/.test(value);
return expr;