From befcf4931d0d8e35e24bd7c92845f6ee19095019 Mon Sep 17 00:00:00 2001
From: Nuvole <jon-lee@sjtu.edu.cn>
Date: Sat, 9 Nov 2024 14:05:54 +0800
Subject: [PATCH] fix: shell split command args

---
 joj3_config_generator/lib/repo.py | 3 ++-
 joj3_config_generator/lib/task.py | 7 ++++++-
 tests/convert/basic/task.json     | 6 +-----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/joj3_config_generator/lib/repo.py b/joj3_config_generator/lib/repo.py
index ffba830..14bdb79 100644
--- a/joj3_config_generator/lib/repo.py
+++ b/joj3_config_generator/lib/repo.py
@@ -1,4 +1,5 @@
 import hashlib
+import shlex
 import socket
 
 from joj3_config_generator.models import joj1, repo, result, task
@@ -48,7 +49,7 @@ def getHealthcheckCmd(repo_conf: repo.Config) -> result.Cmd:
     args = args + immutable_files
 
     cmd = result.Cmd(
-        args=args.split(),
+        args=shlex.split(args),
         # FIXME: easier to edit within global scope
         copy_in={
             f"./repo-health-checker": result.CmdFile(src=f"./repo-health-checker")
diff --git a/joj3_config_generator/lib/task.py b/joj3_config_generator/lib/task.py
index 8666971..f562b9b 100644
--- a/joj3_config_generator/lib/task.py
+++ b/joj3_config_generator/lib/task.py
@@ -1,3 +1,4 @@
+import shlex
 from typing import Any, Dict, Tuple
 
 import rtoml
@@ -59,7 +60,11 @@ def get_executorWithConfig(
     )
     executor_with_config = result.ExecutorWith(
         default=result.Cmd(
-            args=(task_stage.command.split() if task_stage.command is not None else []),
+            args=(
+                shlex.split(task_stage.command)
+                if task_stage.command is not None
+                else []
+            ),
             copy_in={
                 file: result.CmdFile(src=f"/home/tt/.config/joj/{file}")
                 for file in copy_in_files
diff --git a/tests/convert/basic/task.json b/tests/convert/basic/task.json
index 9277b16..9d67b24 100644
--- a/tests/convert/basic/task.json
+++ b/tests/convert/basic/task.json
@@ -531,11 +531,7 @@
                         "default": {
                             "args": [
                                 "cppcheck",
-                                "--template='{\"file\":\"{file}\",\"line\":{line},",
-                                "\"column\":{column},",
-                                "\"severity\":\"{severity}\",",
-                                "\"message\":\"{message}\",",
-                                "\"id\":\"{id}\"}'",
+                                "--template={\"file\":\"{file}\",\"line\":{line}, \"column\":{column}, \"severity\":\"{severity}\", \"message\":\"{message}\", \"id\":\"{id}\"}",
                                 "--force",
                                 "--enable=all",
                                 "--suppress=missingIncludeSystem",