From 91ab3bd972c3f34bf31761bbd8da61c4efdf1339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20L=C3=A9caud=C3=A9?= Date: Wed, 16 Jun 2021 17:00:00 -0400 Subject: [PATCH 1/5] exec node: add windowsHide option to hide windows under Windows --- .../@node-red/nodes/core/function/90-exec.html | 11 +++++++++++ .../@node-red/nodes/core/function/90-exec.js | 3 ++- .../nodes/locales/en-US/function/90-exec.html | 1 + .../@node-red/nodes/locales/en-US/messages.json | 3 ++- 4 files changed, 16 insertions(+), 2 deletions(-) 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 c4d841a13..9f026448c 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 @@ -40,6 +40,10 @@ +
+ + +
@@ -56,6 +60,7 @@ append: {value:""}, useSpawn: {value:"false"}, timer: {value:""}, + windowsHide: {value:false}, oldrc: {value:false}, name: {value:""} }, @@ -92,6 +97,12 @@ }); $("#node-input-addpay-cb").trigger("change") + + if (this.windowsHide === "true" || this.windowsHide === true) { + $("#node-input-windowsHide").prop("checked",true); + } else { + $("#node-input-windowsHide").prop("checked",false); + } }, oneditsave: function() { if (!$("#node-input-addpay-cb").prop("checked")) { 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 9ec60f4ff..7b51d3305 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 @@ -34,7 +34,8 @@ module.exports = function(RED) { this.timer = Number(n.timer || 0)*1000; this.activeProcesses = {}; this.oldrc = (n.oldrc || false).toString(); - this.execOpt = {encoding:'binary', maxBuffer:RED.settings.execMaxBufferSize||10000000}; + this.execOpt = {encoding:'binary', maxBuffer:RED.settings.execMaxBufferSize||10000000, windowsHide: (n.windowsHide === true)}; + this.spawnOpt = {windowsHide: (n.windowsHide === true) } var node = this; if (process.platform === 'linux' && fs.existsSync('/bin/bash')) { node.execOpt.shell = '/bin/bash'; } diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html index ff515e781..093b3f7ce 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html +++ b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html @@ -80,4 +80,5 @@

If the node has more than one process running then msg.pid must also be set with the value of the PID to be killed.

If a value is provided in the Timeout field then, if the process has not completed when the specified number of seconds has elapsed, the process will be killed automatically

Tip: if running a Python app you may need to use the -u parameter to stop the output being buffered.

+

The Hide windows option can be set to hide shell windows under Windows.

diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index e5108710b..d559ad712 100755 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -198,7 +198,8 @@ "seconds": "seconds", "stdout": "stdout", "stderr": "stderr", - "retcode": "return code" + "retcode": "return code", + "windowshide": "Hide windows" }, "placeholder": { "extraparams": "extra input parameters" From 2f0631809d40d887132eb62a2f3cfea309ec35c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20L=C3=A9caud=C3=A9?= Date: Wed, 16 Jun 2021 17:09:21 -0400 Subject: [PATCH 2/5] exec node: modify test --- packages/node_modules/@node-red/nodes/core/function/90-exec.js | 2 +- test/nodes/core/function/90-exec_spec.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 7b51d3305..8d5fdf296 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 @@ -87,7 +87,7 @@ module.exports = function(RED) { var cmd = arg.shift(); /* istanbul ignore else */ if (RED.settings.verbose) { node.log(cmd+" ["+arg+"]"); } - child = spawn(cmd,arg); + child = spawn(cmd,arg,node.spawnOpt); node.status({fill:"blue",shape:"dot",text:"pid:"+child.pid}); var unknownCommand = (child.pid === undefined); if (node.timer !== 0) { diff --git a/test/nodes/core/function/90-exec_spec.js b/test/nodes/core/function/90-exec_spec.js index b21409c23..4b0eaff2d 100644 --- a/test/nodes/core/function/90-exec_spec.js +++ b/test/nodes/core/function/90-exec_spec.js @@ -44,6 +44,7 @@ describe('exec node', function() { n1.should.have.property("addpay","payload"); n1.should.have.property("timer",0); n1.should.have.property("oldrc","false"); + n1.should.have.property("windowsHide",false); done(); }); }); From 7ae48d73907d2f15131c66dcea80fa09e0619a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20L=C3=A9caud=C3=A9?= Date: Wed, 16 Jun 2021 17:38:34 -0400 Subject: [PATCH 3/5] exec: solidify tests --- test/nodes/core/function/90-exec_spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/nodes/core/function/90-exec_spec.js b/test/nodes/core/function/90-exec_spec.js index 4b0eaff2d..247a7876c 100644 --- a/test/nodes/core/function/90-exec_spec.js +++ b/test/nodes/core/function/90-exec_spec.js @@ -44,7 +44,8 @@ describe('exec node', function() { n1.should.have.property("addpay","payload"); n1.should.have.property("timer",0); n1.should.have.property("oldrc","false"); - n1.should.have.property("windowsHide",false); + n1.should.have.property("execOpt", {encoding:'binary', maxBuffer:10000000, windowsHide: false}); + n1.should.have.property("spawnOpt", {windowsHide:false}); done(); }); }); From 04f4a76b410f327cbcd000bd7906bda112488995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20L=C3=A9caud=C3=A9?= Date: Fri, 18 Jun 2021 14:46:16 -0400 Subject: [PATCH 4/5] exec node: clarify scope --- .../@node-red/nodes/locales/en-US/function/90-exec.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html index 093b3f7ce..bf0eac3ec 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html +++ b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html @@ -80,5 +80,5 @@

If the node has more than one process running then msg.pid must also be set with the value of the PID to be killed.

If a value is provided in the Timeout field then, if the process has not completed when the specified number of seconds has elapsed, the process will be killed automatically

Tip: if running a Python app you may need to use the -u parameter to stop the output being buffered.

-

The Hide windows option can be set to hide shell windows under Windows.

+

The Hide windows option can be set to hide shell windows under Windows. This option will only affect Windows operating systems.

From 2baff243ed2221b4e11ef64ccf0344dbc450ad7f Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 2 Jul 2021 09:22:08 +0100 Subject: [PATCH 5/5] Rename exec node hideWin option --- .../@node-red/nodes/core/function/90-exec.html | 14 +++++++------- .../@node-red/nodes/core/function/90-exec.js | 4 ++-- .../nodes/locales/en-US/function/90-exec.html | 2 +- .../@node-red/nodes/locales/en-US/messages.json | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) 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 9f026448c..ea988a84a 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 @@ -41,8 +41,8 @@
- - + +
@@ -60,7 +60,7 @@ append: {value:""}, useSpawn: {value:"false"}, timer: {value:""}, - windowsHide: {value:false}, + winHide: {value:false}, oldrc: {value:false}, name: {value:""} }, @@ -97,11 +97,11 @@ }); $("#node-input-addpay-cb").trigger("change") - - if (this.windowsHide === "true" || this.windowsHide === true) { - $("#node-input-windowsHide").prop("checked",true); + + if (this.winHide === "true" || this.winHide === true) { + $("#node-input-winHide").prop("checked",true); } else { - $("#node-input-windowsHide").prop("checked",false); + $("#node-input-winHide").prop("checked",false); } }, oneditsave: function() { 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 8d5fdf296..cf4168ae8 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 @@ -34,8 +34,8 @@ module.exports = function(RED) { this.timer = Number(n.timer || 0)*1000; this.activeProcesses = {}; this.oldrc = (n.oldrc || false).toString(); - this.execOpt = {encoding:'binary', maxBuffer:RED.settings.execMaxBufferSize||10000000, windowsHide: (n.windowsHide === true)}; - this.spawnOpt = {windowsHide: (n.windowsHide === true) } + this.execOpt = {encoding:'binary', maxBuffer:RED.settings.execMaxBufferSize||10000000, windowsHide: (n.winHide === true)}; + this.spawnOpt = {windowsHide: (n.winHide === true) } var node = this; if (process.platform === 'linux' && fs.existsSync('/bin/bash')) { node.execOpt.shell = '/bin/bash'; } diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html index bf0eac3ec..0a9f509bf 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html +++ b/packages/node_modules/@node-red/nodes/locales/en-US/function/90-exec.html @@ -73,6 +73,7 @@

The returned payload is usually a string, unless non-UTF8 characters are detected, in which case it is a buffer.

The node's status icon and PID will be visible while the node is active. Changes to this can be read by the Status node.

+

The Hide console option will hide the process console normally shown on Windows systems.

Killing processes

Sending msg.kill will kill a single active process. msg.kill should be a string containing the type of signal to be sent, for example, SIGINT, SIGQUIT or SIGHUP. @@ -80,5 +81,4 @@

If the node has more than one process running then msg.pid must also be set with the value of the PID to be killed.

If a value is provided in the Timeout field then, if the process has not completed when the specified number of seconds has elapsed, the process will be killed automatically

Tip: if running a Python app you may need to use the -u parameter to stop the output being buffered.

-

The Hide windows option can be set to hide shell windows under Windows. This option will only affect Windows operating systems.

diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index d559ad712..89bab6407 100755 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -199,7 +199,7 @@ "stdout": "stdout", "stderr": "stderr", "retcode": "return code", - "windowshide": "Hide windows" + "winHide": "Hide console" }, "placeholder": { "extraparams": "extra input parameters"