From fdcf9c707e74f341542aa4898426e240e09dd0df Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Fri, 24 Jun 2022 18:59:52 +0200 Subject: [PATCH] processes() improved command parsing --- lib/processes.js | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/lib/processes.js b/lib/processes.js index f1cb08e..2dae694 100644 --- a/lib/processes.js +++ b/lib/processes.js @@ -589,36 +589,41 @@ function processes(callback) { const p1 = fullcommand.indexOf('('); const p2 = fullcommand.indexOf(')'); const p3 = fullcommand.indexOf('/'); + const p4 = fullcommand.indexOf(':'); if (p1 < p2 && p1 < p3 && p3 < p2) { command = fullcommand.split(' ')[0]; command = command.replace(/:/g, ''); } else { - // try to figure out where parameter starts - let firstParamPos = fullcommand.indexOf(' -'); - let firstParamPathPos = fullcommand.indexOf(' /'); - firstParamPos = (firstParamPos >= 0 ? firstParamPos : 10000); - firstParamPathPos = (firstParamPathPos >= 0 ? firstParamPathPos : 10000); - const firstPos = Math.min(firstParamPos, firstParamPathPos); - let tmpCommand = fullcommand.substr(0, firstPos); - const tmpParams = fullcommand.substr(firstPos); - const lastSlashPos = tmpCommand.lastIndexOf('/'); - if (lastSlashPos >= 0) { - cmdPath = tmpCommand.substr(0, lastSlashPos); - tmpCommand = tmpCommand.substr(lastSlashPos + 1); - } + if (p4 > 0) { + command = fullcommand.split(' ')[0]; + } else { + // try to figure out where parameter starts + let firstParamPos = fullcommand.indexOf(' -'); + let firstParamPathPos = fullcommand.indexOf(' /'); + firstParamPos = (firstParamPos >= 0 ? firstParamPos : 10000); + firstParamPathPos = (firstParamPathPos >= 0 ? firstParamPathPos : 10000); + const firstPos = Math.min(firstParamPos, firstParamPathPos); + let tmpCommand = fullcommand.substr(0, firstPos); + const tmpParams = fullcommand.substr(firstPos); + const lastSlashPos = tmpCommand.lastIndexOf('/'); + if (lastSlashPos >= 0) { + cmdPath = tmpCommand.substr(0, lastSlashPos); + tmpCommand = tmpCommand.substr(lastSlashPos + 1); + } - if (firstPos === 10000 && tmpCommand.indexOf(' ') > -1) { - const parts = tmpCommand.split(' '); - if (fs.existsSync(path.join(cmdPath, parts[0]))) { - command = parts.shift(); - params = (parts.join(' ') + ' ' + tmpParams).trim(); + if (firstPos === 10000 && tmpCommand.indexOf(' ') > -1) { + const parts = tmpCommand.split(' '); + if (fs.existsSync(path.join(cmdPath, parts[0]))) { + command = parts.shift(); + params = (parts.join(' ') + ' ' + tmpParams).trim(); + } else { + command = tmpCommand.trim(); + params = tmpParams.trim(); + } } else { command = tmpCommand.trim(); params = tmpParams.trim(); } - } else { - command = tmpCommand.trim(); - params = tmpParams.trim(); } }