From 3f2dad2b94346a0dec7852bbc7ebd954fea39b8d Mon Sep 17 00:00:00 2001 From: Kang Date: Thu, 23 Jul 2026 17:49:37 +0800 Subject: [PATCH] refactor(docker): update Docker command paths for improved execution (#250) - Modified Docker command constants to include specific PATH settings for better execution in various environments. - Updated test cases to reflect changes in command formatting, ensuring consistency and correctness in command execution. - Enhanced the handling of sudo commands to include environment variables, improving compatibility with different system configurations. --- src-tauri/src/cmd/docker.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/cmd/docker.rs b/src-tauri/src/cmd/docker.rs index 220ed646..1bc7864f 100644 --- a/src-tauri/src/cmd/docker.rs +++ b/src-tauri/src/cmd/docker.rs @@ -26,9 +26,9 @@ const DOCKER_TIMEOUT: Duration = Duration::from_secs(20); const DOCKER_LOG_TIMEOUT: Duration = Duration::from_secs(30); const COMPOSE_PS_JSON_BEGIN: &str = "COMPOSE_PS_JSON_BEGIN"; const COMPOSE_PS_JSON_END: &str = "COMPOSE_PS_JSON_END"; -const DOCKER_PLAIN: &str = "docker"; -const DOCKER_SUDO_NON_INTERACTIVE: &str = "sudo -n docker"; -const DOCKER_SUDO_STDIN_TERMINAL: &str = "sudo -S -p \"\" docker"; +const DOCKER_PLAIN: &str = "PATH=/usr/local/bin:/var/packages/ContainerManager/target/usr/bin:/var/packages/Docker/target/usr/bin:$PATH docker"; +const DOCKER_SUDO_NON_INTERACTIVE: &str = "sudo -n env PATH=/usr/local/bin:/var/packages/ContainerManager/target/usr/bin:/var/packages/Docker/target/usr/bin:$PATH docker"; +const DOCKER_SUDO_STDIN_TERMINAL: &str = "sudo -S -p \"\" env PATH=/usr/local/bin:/var/packages/ContainerManager/target/usr/bin:/var/packages/Docker/target/usr/bin:$PATH docker"; pub struct DockerSudoManager { pending: Mutex>>>, @@ -1426,9 +1426,9 @@ mod tests { assert_eq!( attempts, [ - "docker ps -a", - "sudo -n docker ps -a", - "sudo -S -p \"\" docker ps -a", + format!("{DOCKER_PLAIN} ps -a"), + format!("{DOCKER_SUDO_NON_INTERACTIVE} ps -a"), + format!("{DOCKER_SUDO_STDIN_TERMINAL} ps -a"), ] ); } @@ -1437,7 +1437,7 @@ mod tests { fn sudo_password_prefix_is_safe_inside_sh_c_scripts() { let command = docker_overview_script(DOCKER_SUDO_STDIN_TERMINAL); - assert!(command.contains("sudo -S -p \"\" docker info")); + assert!(command.contains(&format!("{DOCKER_SUDO_STDIN_TERMINAL} info"))); assert!(!command.contains("sudo -S -p '' docker")); } @@ -1464,7 +1464,10 @@ mod tests { }, |docker| format!("{docker} logs -f 'abc'"), ); - assert_eq!(prepared.command, "sudo -S -p \"\" docker logs -f 'abc'"); + assert_eq!( + prepared.command, + format!("{DOCKER_SUDO_STDIN_TERMINAL} logs -f 'abc'") + ); assert_eq!(prepared.stdin.as_deref(), Some("secret\n")); assert!(!prepared.command.contains("secret")); }