diff --git a/hive-c0re/src/lifecycle.rs b/hive-c0re/src/lifecycle.rs index 72c26cd..8d7cddc 100644 --- a/hive-c0re/src/lifecycle.rs +++ b/hive-c0re/src/lifecycle.rs @@ -54,13 +54,26 @@ pub async fn list() -> Result> { } async fn run(args: &[&str]) -> Result<()> { - let status = Command::new("nixos-container") + let out = Command::new("nixos-container") .args(args) - .status() + .output() .await .with_context(|| format!("invoke nixos-container {}", args.join(" ")))?; - if !status.success() { - bail!("nixos-container {} exited with {status}", args.join(" ")); + let stdout = String::from_utf8_lossy(&out.stdout); + let stderr = String::from_utf8_lossy(&out.stderr); + if !stdout.trim().is_empty() { + tracing::info!(target: "nixos-container", "{}", stdout.trim()); + } + if !stderr.trim().is_empty() { + tracing::warn!(target: "nixos-container", "{}", stderr.trim()); + } + if !out.status.success() { + bail!( + "nixos-container {} failed ({}): {}", + args.join(" "), + out.status, + stderr.trim() + ); } Ok(()) }