diff --git a/genealogos/src/backend/nixtract.rs b/genealogos/src/backend/nixtract.rs index 1f84d74..103c719 100644 --- a/genealogos/src/backend/nixtract.rs +++ b/genealogos/src/backend/nixtract.rs @@ -116,6 +116,18 @@ impl crate::backend::BackendTrait for Nixtract { let output = command.output()?; let stdout = String::from_utf8_lossy(&output.stdout); + // Check if the command was successful + if !output.status.success() { + return Err(crate::Error::NixtractCommand(format!( + "nixtract exited with status code {}", + output.status + ))); + } else if output.stdout.is_empty() { + return Err(crate::Error::NixtractCommand( + "nixtract produced no output".to_string(), + )); + } + // Split stdout into lines let lines = stdout.lines(); diff --git a/genealogos/src/error.rs b/genealogos/src/error.rs index dca99c1..7b3530a 100644 --- a/genealogos/src/error.rs +++ b/genealogos/src/error.rs @@ -9,7 +9,7 @@ pub enum Error { #[error("Errors constructing CycloneDX output: {0}")] CycloneDX(#[source] Box), - #[error("Nixtract exited with a non-zero exit code: {0}")] + #[error("Nixtract failed: {0}")] NixtractCommand(String), #[error("Genealogos encountered an IO error: {0}")]