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