From cd5c765f271fdfdabffcf583e3dcee0233be4399 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Silva?=
 <123550+andresilva@users.noreply.github.com>
Date: Tue, 14 May 2024 15:03:22 +0100
Subject: [PATCH] fix(docker): don't early exit if docker binary isn't
 available (#211)

---
 crates/provider/src/docker/client.rs | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/crates/provider/src/docker/client.rs b/crates/provider/src/docker/client.rs
index 2f8dca5..c2699b1 100644
--- a/crates/provider/src/docker/client.rs
+++ b/crates/provider/src/docker/client.rs
@@ -186,21 +186,24 @@ impl DockerClient {
     }
 
     async fn is_using_podman() -> Result<bool> {
-        let result = tokio::process::Command::new("docker")
+        if let Ok(output) = tokio::process::Command::new("docker")
+            .arg("version")
+            .output()
+            .await
+        {
+            // detect whether we're actually running podman with docker emulation
+            return Ok(String::from_utf8_lossy(&output.stdout)
+                .to_lowercase()
+                .contains("podman"));
+        }
+
+        tokio::process::Command::new("podman")
             .arg("--version")
             .output()
             .await
             .map_err(|err| anyhow!("Failed to detect container engine: {err}"))?;
 
-        if !result.status.success() {
-            return Err(anyhow!(
-                "Failed to detect container engine: {}",
-                String::from_utf8_lossy(&result.stderr)
-            )
-            .into());
-        }
-
-        Ok(String::from_utf8_lossy(&result.stdout).contains("podman"))
+        Ok(true)
     }
 }
 
-- 
GitLab