let daemon accept real json array of parameters

to close #768
This commit is contained in:
Dave Conway-Jones 2021-03-11 19:09:13 +00:00
parent 4d7ba48797
commit fe42b69712
No known key found for this signature in database
GPG Key ID: 88BA2B8A411BE9FF
3 changed files with 10 additions and 2 deletions

View File

@ -52,6 +52,7 @@
<script type="text/html" data-help-name="daemon">
<p>Calls out to a long running system command. Sends <code>msg.payload</code> to stdin of the process.</p>
<p>Provides 3 outputs... stdout, stderr, and return code , from the running command.</p>
<p>Parameters can be space separated, space separated with quotes, or a javascript array. For example `aa bb` or `"cc dd"` or `["aa","bb cc""]`.</p>
<p>If the called program stops (i.e. a return code is produced), this node can attempt to restart the command.</p>
<p>Setting <code>msg.kill</code> to a signal name (e.g. SIGINT, SIGHUP) will stop the process - but if the
restart flag is set it will then auto restart. Sending <code>msg.start</code> will also re-start the process.</p>

View File

@ -7,7 +7,7 @@ module.exports = function(RED) {
RED.nodes.createNode(this,n);
this.cmd = n.command;
//this.args = n.args.trim().split(" ") || [];
this.args = n.args.trim().match(/("[^"]*")|[^ ]+/g);
this.args = n.args.trim(); //.match(/("[^"]*")|[^ ]+/g);
this.cr = n.cr;
this.op = n.op;
this.redo = n.redo;
@ -15,6 +15,13 @@ module.exports = function(RED) {
this.closer = n.closer || "SIGKILL";
this.autorun = true;
if (n.autorun === false) { this.autorun = false; }
if (this.args.match(/^\[.*\]$/)) {
try { this.args = JSON.parse(this.args); }
catch(e) {
node.warn("Bad parameters - should be a JSON array or space separated")
}
}
else { this.args = this.args.match(/("[^"]*")|[^ ]+/g); }
var node = this;
var lastmsg = {};

View File

@ -1,6 +1,6 @@
{
"name" : "node-red-node-daemon",
"version" : "0.1.3",
"version" : "0.2.0",
"description" : "A Node-RED node that runs and monitors a long running system command.",
"dependencies" : {
},