1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Exec node: remove addpayValue and reuse addpay to track appending property

This commit is contained in:
Nick O'Leary 2021-03-31 23:50:00 +01:00
parent 89485971fa
commit bdb548ffdc
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
3 changed files with 29 additions and 14 deletions

View File

@ -21,9 +21,8 @@
</div> </div>
<div class="form-row"> <div class="form-row">
<label><i class="fa fa-plus"></i> <span data-i18n="exec.label.append"></span></label> <label><i class="fa fa-plus"></i> <span data-i18n="exec.label.append"></span></label>
<input type="checkbox" id="node-input-addpay" style="display:inline-block; width:auto;"> <input type="checkbox" id="node-input-addpay-cb" style="display:inline-block; width:auto;">
&nbsp; <input type="text" id="node-input-addpay" style="margin-left: 5px; width:160px;">
<input type="text" id="node-input-addpayValue" style="width:160px;">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-input-append"> </label> <label for="node-input-append"> </label>
@ -53,8 +52,7 @@
color:"darksalmon", color:"darksalmon",
defaults: { defaults: {
command: {value:""}, command: {value:""},
addpay: {value:false}, addpay: {value:""},
addpayValue: {value:"payload"},
append: {value:""}, append: {value:""},
useSpawn: {value:"false"}, useSpawn: {value:"false"},
timer: {value:""}, timer: {value:""},
@ -81,13 +79,24 @@
if ($("#node-input-useSpawn").val() === null) { if ($("#node-input-useSpawn").val() === null) {
$("#node-input-useSpawn").val(this.useSpawn.toString()); $("#node-input-useSpawn").val(this.useSpawn.toString());
} }
if ($("#node-input-addpayValue").val() === "") { $("#node-input-addpay-cb").prop("checked", this.addpay === true || (this.addpay !== false && this.addpay !== ""))
$("#node-input-addpayValue").val("payload"); var addpayValue = (this.addpay === true)?"payload":((this.addpay === false || this.addpay === "")?"payload":this.addpay);
} $("#node-input-addpay-cb").on("change", function(evt) {
$("#node-input-addpayValue").typedInput({ $("#node-input-addpay").typedInput("disable",!$("#node-input-addpay-cb").prop("checked"));
});
$("#node-input-addpay").val(addpayValue);
$("#node-input-addpay").typedInput({
default: "msg", default: "msg",
types: ["msg"] types: ["msg"]
}); });
$("#node-input-addpay-cb").trigger("change")
},
oneditsave: function() {
if (!$("#node-input-addpay-cb").prop("checked")) {
$("#node-input-addpay").val("");
}
} }
}); });
</script> </script>

View File

@ -26,7 +26,9 @@ module.exports = function(RED) {
this.cmd = (n.command || "").trim(); this.cmd = (n.command || "").trim();
if (n.addpay === undefined) { n.addpay = true; } if (n.addpay === undefined) { n.addpay = true; }
this.addpay = n.addpay; this.addpay = n.addpay;
this.addpayValue = n.addpayValue || "payload"; if (this.addpay === true) {
this.addpay = "payload";
}
this.append = (n.append || "").trim(); this.append = (n.append || "").trim();
this.useSpawn = (n.useSpawn == "true"); this.useSpawn = (n.useSpawn == "true");
this.timer = Number(n.timer || 0)*1000; this.timer = Number(n.timer || 0)*1000;
@ -66,7 +68,7 @@ module.exports = function(RED) {
// then prepend with the msg.payload // then prepend with the msg.payload
var arg = node.cmd; var arg = node.cmd;
if (node.addpay) { if (node.addpay) {
var value = RED.util.getMessageProperty(msg, node.addpayValue); var value = RED.util.getMessageProperty(msg, node.addpay);
if (value !== undefined) { if (value !== undefined) {
arg += " " + value; arg += " " + value;
} }

View File

@ -41,7 +41,7 @@ describe('exec node', function() {
n1.should.have.property("name", "exec1"); n1.should.have.property("name", "exec1");
n1.should.have.property("cmd", ""); n1.should.have.property("cmd", "");
n1.should.have.property("append", ""); 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("timer",0);
n1.should.have.property("oldrc","false"); n1.should.have.property("oldrc","false");
done(); done();
@ -115,23 +115,27 @@ describe('exec node', function() {
}); });
it('should exec a simple command with appended value from message', function (done) { 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"}]; {id:"n2", type:"helper"}];
helper.load(execNode, flow, function () { helper.load(execNode, flow, function () {
var n1 = helper.getNode("n1"); var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2"); var n2 = helper.getNode("n2");
n2.on("input", function (msg) { n2.on("input", function (msg) {
try {
msg.should.have.property("payload"); msg.should.have.property("payload");
msg.payload.should.be.a.String(); msg.payload.should.be.a.String();
msg.payload.should.equal("bar more\n"); msg.payload.should.equal("bar more\n");
done(); done();
} catch(err) {
done(err)
}
}); });
n1.receive({payload:"foo", topic:"bar"}); n1.receive({payload:"foo", topic:"bar"});
}); });
}); });
it('should exec a simple command with extra parameters', function(done) { 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"}]; {id:"n2", type:"helper"},{id:"n3", type:"helper"},{id:"n4", type:"helper"}];
var spy = sinon.stub(child_process, 'exec', var spy = sinon.stub(child_process, 'exec',
function(arg1, arg2, arg3, arg4) { function(arg1, arg2, arg3, arg4) {