From bd69d50822de2cb12a293b77428b9263a8cebf1c Mon Sep 17 00:00:00 2001 From: fbrv Date: Tue, 13 Aug 2024 11:53:33 +0100 Subject: [PATCH 1/3] stuff --- crates/cli/src/docker_cmd.rs | 58 +++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/crates/cli/src/docker_cmd.rs b/crates/cli/src/docker_cmd.rs index 7383573e..f0299eb9 100644 --- a/crates/cli/src/docker_cmd.rs +++ b/crates/cli/src/docker_cmd.rs @@ -8,22 +8,43 @@ use eyre::Result; macro_rules! run_docker_compose { ($compose_path:expr, $($arg:expr),*) => {{ - let cmd = determine_docker_compose_command(); - match cmd { - Some(mut command) => { - match command.arg("-f").arg($compose_path).args(&[$($arg),*]).output() { - Ok(output) => { - if !output.status.success() { - let stderr = str::from_utf8(&output.stderr).unwrap_or(""); - if stderr.contains("permission denied") { - println!("Warning: Permission denied. Try running with sudo."); - } else { - println!("Command failed with error: {}", stderr); + let cmd_info = determine_docker_compose_command(); + match cmd_info { + Some((mut command, version)) => { + // Determine the order based on the version + if version == "v1" { + // v1: run with -f after other args + match command.args(&[$($arg),*]).arg("-f").arg($compose_path).output() { + Ok(output) => { + if !output.status.success() { + let stderr = str::from_utf8(&output.stderr).unwrap_or(""); + if stderr.contains("permission denied") { + println!("Warning: Permission denied. Try running with sudo."); + } else { + println!("Command failed with error: {}", stderr); + } } } + Err(e) => { + println!("Failed to execute command: {}", e); + } } - Err(e) => { - println!("Failed to execute command: {}", e); + } else { + // v2: run with -f before other args + match command.arg("-f").arg($compose_path).args(&[$($arg),*]).output() { + Ok(output) => { + if !output.status.success() { + let stderr = str::from_utf8(&output.stderr).unwrap_or(""); + if stderr.contains("permission denied") { + println!("Warning: Permission denied. Try running with sudo."); + } else { + println!("Command failed with error: {}", stderr); + } + } + } + Err(e) => { + println!("Failed to execute command: {}", e); + } } } } @@ -34,22 +55,23 @@ macro_rules! run_docker_compose { }}; } -fn determine_docker_compose_command() -> Option { + +fn determine_docker_compose_command() -> Option<(Command, &'static str)> { if is_command_available("docker compose") { let mut docker: Command = Command::new("docker"); - Some(mem::replace( + Some((mem::replace( docker.arg("compose").stdout(Stdio::inherit()).stderr(Stdio::inherit()), Command::new("docker"), - )) + ), "v2")) } else if is_command_available("docker-compose") { println!( "using docker-compose. the command is being deprecated, install docker compose plugin" ); let mut docker: Command = Command::new("docker-compose"); - Some(mem::replace( + Some((mem::replace( docker.stdout(Stdio::inherit()).stderr(Stdio::inherit()), Command::new("docker"), - )) + ), "v1")) } else { None } From 6cbf275b48152f8269078d796a574b302e27bf58 Mon Sep 17 00:00:00 2001 From: fbrv Date: Tue, 13 Aug 2024 13:27:31 +0100 Subject: [PATCH 2/3] use compose_file --- crates/cli/src/docker_cmd.rs | 46 +++++++++++------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/crates/cli/src/docker_cmd.rs b/crates/cli/src/docker_cmd.rs index f0299eb9..dbcea6d5 100644 --- a/crates/cli/src/docker_cmd.rs +++ b/crates/cli/src/docker_cmd.rs @@ -10,41 +10,23 @@ macro_rules! run_docker_compose { ($compose_path:expr, $($arg:expr),*) => {{ let cmd_info = determine_docker_compose_command(); match cmd_info { - Some((mut command, version)) => { - // Determine the order based on the version - if version == "v1" { - // v1: run with -f after other args - match command.args(&[$($arg),*]).arg("-f").arg($compose_path).output() { - Ok(output) => { - if !output.status.success() { - let stderr = str::from_utf8(&output.stderr).unwrap_or(""); - if stderr.contains("permission denied") { - println!("Warning: Permission denied. Try running with sudo."); - } else { - println!("Command failed with error: {}", stderr); - } + Some((mut command, _version)) => { + // Set the COMPOSE_FILE environment variable + command.env("COMPOSE_FILE", $compose_path); + + match command.args(&[$($arg),*]).output() { + Ok(output) => { + if !output.status.success() { + let stderr = str::from_utf8(&output.stderr).unwrap_or(""); + if stderr.contains("permission denied") { + println!("Warning: Permission denied. Try running with sudo."); + } else { + println!("Command failed with error: {}", stderr); } } - Err(e) => { - println!("Failed to execute command: {}", e); - } } - } else { - // v2: run with -f before other args - match command.arg("-f").arg($compose_path).args(&[$($arg),*]).output() { - Ok(output) => { - if !output.status.success() { - let stderr = str::from_utf8(&output.stderr).unwrap_or(""); - if stderr.contains("permission denied") { - println!("Warning: Permission denied. Try running with sudo."); - } else { - println!("Command failed with error: {}", stderr); - } - } - } - Err(e) => { - println!("Failed to execute command: {}", e); - } + Err(e) => { + println!("Failed to execute command: {}", e); } } } From c50a055d978c9dc54293804d4bd77686196481d5 Mon Sep 17 00:00:00 2001 From: fbrv Date: Tue, 13 Aug 2024 13:28:45 +0100 Subject: [PATCH 3/3] lint --- crates/cli/src/docker_cmd.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/crates/cli/src/docker_cmd.rs b/crates/cli/src/docker_cmd.rs index dbcea6d5..8fab4e2c 100644 --- a/crates/cli/src/docker_cmd.rs +++ b/crates/cli/src/docker_cmd.rs @@ -37,23 +37,28 @@ macro_rules! run_docker_compose { }}; } - fn determine_docker_compose_command() -> Option<(Command, &'static str)> { if is_command_available("docker compose") { let mut docker: Command = Command::new("docker"); - Some((mem::replace( - docker.arg("compose").stdout(Stdio::inherit()).stderr(Stdio::inherit()), - Command::new("docker"), - ), "v2")) + Some(( + mem::replace( + docker.arg("compose").stdout(Stdio::inherit()).stderr(Stdio::inherit()), + Command::new("docker"), + ), + "v2", + )) } else if is_command_available("docker-compose") { println!( "using docker-compose. the command is being deprecated, install docker compose plugin" ); let mut docker: Command = Command::new("docker-compose"); - Some((mem::replace( - docker.stdout(Stdio::inherit()).stderr(Stdio::inherit()), - Command::new("docker"), - ), "v1")) + Some(( + mem::replace( + docker.stdout(Stdio::inherit()).stderr(Stdio::inherit()), + Command::new("docker"), + ), + "v1", + )) } else { None }