From 02dafd469462f574f8325b392f74a10e0a4b7dd1 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Fri, 4 Aug 2023 17:17:42 +0200 Subject: [PATCH] Solver: Fix case of space into solver path. --- src/Solver/ASolver.py | 45 +++++++++++++++++++++++++++++++++---------- src/config.py | 2 +- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py index b4285923..ca6e6f4f 100644 --- a/src/Solver/ASolver.py +++ b/src/Solver/ASolver.py @@ -189,9 +189,18 @@ class AbstractSolver(object): logger.debug(f"! {cmd}") - cmd = cmd.split() - exe = cmd[0] - args = cmd[1:] + if cmd[0] == "\"": + # Command line executable path is between " char + cmd = cmd.split("\"") + exe = cmd[1] + args = "\"".join(cmd[3:]).split(" ") + else: + # We suppose the command line executable path as no space char + cmd = cmd.replace("\ ", "&_&").split(" ") + exe = cmd[0].replace("&_&", "\ ") + args = cmd[1:] + + logger.info(f"! {exe} {args}") if not os.path.exists(exe): error = f"[ERROR] Path {exe} do not exists" @@ -215,11 +224,20 @@ class AbstractSolver(object): cmd = cmd.replace("@input", self.input_param()) cmd = cmd.replace("@dir", self._process.workingDirectory()) - logger.debug(f"! {cmd}") + logger.info(f"! {cmd}") - cmd = cmd.split() - exe = cmd[0] - args = cmd[1:] + if cmd[0] == "\"": + # Command line executable path is between " char + cmd = cmd.split("\"") + exe = cmd[1] + args = "\"".join(cmd[3:]).split(" ") + else: + # We suppose the command line executable path as no space char + cmd = cmd.replace("\ ", "&_&").split(" ") + exe = cmd[0].replace("&_&", "\ ") + args = cmd[1:] + + logger.info(f"! {exe} {args}") if not os.path.exists(exe): error = f"[ERROR] Path {exe} do not exists" @@ -246,9 +264,16 @@ class AbstractSolver(object): logger.debug(f"! {cmd}") - cmd = cmd.split() - exe = cmd[0] - args = cmd[1:] + if cmd[0] == "\"": + # Command line executable path is between " char + cmd = cmd.split("\"") + exe = cmd[1] + args = "\"".join(cmd[3:]).split(" ") + else: + # We suppose the command line executable path as no space char + cmd = cmd.replace("\ ", "&_&").split(" ") + exe = cmd[0].replace("&_&", "\ ") + args = cmd[1:] if not os.path.exists(exe): error = f"[ERROR] Path {exe} do not exists" diff --git a/src/config.py b/src/config.py index 16ec6b12..89563ecb 100644 --- a/src/config.py +++ b/src/config.py @@ -254,7 +254,7 @@ class Config(SQL): ctor = solver_type_list["mage8"] new = ctor("default-mage") new._description = "Default PAMHYR mage 8 version" - new._cmd_solver = f"""@install_dir/mage/mage{"" if posix else ".exe"} -fp=1 @input""" + new._cmd_solver = f""""@install_dir/mage/mage{"" if posix else ".exe"}" -fp=1 @input""" self._solvers.append(new) # Meshing tool -- GitLab