diff --git a/packages/node_modules/@node-red/nodes/core/function/90-exec.html b/packages/node_modules/@node-red/nodes/core/function/90-exec.html
index 7106a89b5..c4d841a13 100644
--- a/packages/node_modules/@node-red/nodes/core/function/90-exec.html
+++ b/packages/node_modules/@node-red/nodes/core/function/90-exec.html
@@ -21,9 +21,8 @@
-
-
-
+
+
@@ -53,8 +52,7 @@
color:"darksalmon",
defaults: {
command: {value:""},
- addpay: {value:false},
- addpayValue: {value:"payload"},
+ addpay: {value:""},
append: {value:""},
useSpawn: {value:"false"},
timer: {value:""},
@@ -81,13 +79,24 @@
if ($("#node-input-useSpawn").val() === null) {
$("#node-input-useSpawn").val(this.useSpawn.toString());
}
- if ($("#node-input-addpayValue").val() === "") {
- $("#node-input-addpayValue").val("payload");
- }
- $("#node-input-addpayValue").typedInput({
+ $("#node-input-addpay-cb").prop("checked", this.addpay === true || (this.addpay !== false && this.addpay !== ""))
+ var addpayValue = (this.addpay === true)?"payload":((this.addpay === false || this.addpay === "")?"payload":this.addpay);
+ $("#node-input-addpay-cb").on("change", function(evt) {
+ $("#node-input-addpay").typedInput("disable",!$("#node-input-addpay-cb").prop("checked"));
+ });
+
+ $("#node-input-addpay").val(addpayValue);
+ $("#node-input-addpay").typedInput({
default: "msg",
types: ["msg"]
});
+
+ $("#node-input-addpay-cb").trigger("change")
+ },
+ oneditsave: function() {
+ if (!$("#node-input-addpay-cb").prop("checked")) {
+ $("#node-input-addpay").val("");
+ }
}
});
diff --git a/packages/node_modules/@node-red/nodes/core/function/90-exec.js b/packages/node_modules/@node-red/nodes/core/function/90-exec.js
index 487166bcc..9ec60f4ff 100644
--- a/packages/node_modules/@node-red/nodes/core/function/90-exec.js
+++ b/packages/node_modules/@node-red/nodes/core/function/90-exec.js
@@ -26,7 +26,9 @@ module.exports = function(RED) {
this.cmd = (n.command || "").trim();
if (n.addpay === undefined) { n.addpay = true; }
this.addpay = n.addpay;
- this.addpayValue = n.addpayValue || "payload";
+ if (this.addpay === true) {
+ this.addpay = "payload";
+ }
this.append = (n.append || "").trim();
this.useSpawn = (n.useSpawn == "true");
this.timer = Number(n.timer || 0)*1000;
@@ -66,7 +68,7 @@ module.exports = function(RED) {
// then prepend with the msg.payload
var arg = node.cmd;
if (node.addpay) {
- var value = RED.util.getMessageProperty(msg, node.addpayValue);
+ var value = RED.util.getMessageProperty(msg, node.addpay);
if (value !== undefined) {
arg += " " + value;
}
diff --git a/test/nodes/core/function/90-exec_spec.js b/test/nodes/core/function/90-exec_spec.js
index c57225de8..e89465c3e 100644
--- a/test/nodes/core/function/90-exec_spec.js
+++ b/test/nodes/core/function/90-exec_spec.js
@@ -41,7 +41,7 @@ describe('exec node', function() {
n1.should.have.property("name", "exec1");
n1.should.have.property("cmd", "");
n1.should.have.property("append", "");
- n1.should.have.property("addpay",true);
+ n1.should.have.property("addpay","payload");
n1.should.have.property("timer",0);
n1.should.have.property("oldrc","false");
done();
@@ -115,23 +115,27 @@ describe('exec node', function() {
});
it('should exec a simple command with appended value from message', function (done) {
- var flow = [{id:"n1", type:"exec", wires:[["n2"]], command:"echo", addpay:true, addpayValue:"topic", append:"more", oldrc:"false"},
+ var flow = [{id:"n1", type:"exec", wires:[["n2"]], command:"echo", addpay:"topic", append:"more", oldrc:"false"},
{id:"n2", type:"helper"}];
helper.load(execNode, flow, function () {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function (msg) {
+ try {
msg.should.have.property("payload");
msg.payload.should.be.a.String();
msg.payload.should.equal("bar more\n");
done();
+ } catch(err) {
+ done(err)
+ }
});
n1.receive({payload:"foo", topic:"bar"});
});
});
it('should exec a simple command with extra parameters', function(done) {
- var flow = [{id:"n1",type:"exec",wires:[["n2"],["n3"],["n4"]],command:"echo", addpay:true, append:"more", oldrc:"false"},
+ var flow = [{id:"n1",type:"exec",wires:[["n2"],["n3"],["n4"]],command:"echo", addpay:"payload", append:"more", oldrc:"false"},
{id:"n2", type:"helper"},{id:"n3", type:"helper"},{id:"n4", type:"helper"}];
var spy = sinon.stub(child_process, 'exec',
function(arg1, arg2, arg3, arg4) {