lifecycle: surface nixos-container stderr in error + log

This commit is contained in:
müde 2026-05-14 21:48:23 +02:00
parent 58141bdcf0
commit f6cf4223a4

View file

@ -54,13 +54,26 @@ pub async fn list() -> Result<Vec<String>> {
}
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(())
}