From 95387b07393fe293b423c87fdd8ad2e78901a067 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Fri, 12 Feb 2021 16:35:37 +0100 Subject: pkgs/profpatsch/nman: distinguish between failed and missing cmds --- pkgs/profpatsch/nman/nman.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'pkgs/profpatsch/nman') diff --git a/pkgs/profpatsch/nman/nman.rs b/pkgs/profpatsch/nman/nman.rs index 53fd4b77..b73836df 100644 --- a/pkgs/profpatsch/nman/nman.rs +++ b/pkgs/profpatsch/nman/nman.rs @@ -40,7 +40,6 @@ fn mktemp(suffix: &str) -> std::io::Result { } } -// TODO(sterni): distinguish between cmd not found and cmd failure // TODO(sterni): track helpful error context in this enum enum NmanError { NoTempDir, @@ -50,6 +49,7 @@ enum NmanError { NotFound, NixParseError, Usage, + Execution, } impl NmanError { @@ -62,6 +62,7 @@ impl NmanError { NmanError::NotFound => 1, NmanError::NixParseError => 69, // EX_SOFTWARE NmanError::Usage => 64, // EX_USAGE + NmanError::Execution => 127, // like bash } } @@ -74,6 +75,7 @@ impl NmanError { NmanError::NotFound => "desired man page could not be found", NmanError::NixParseError => "nix executable produced unexpected output", NmanError::Usage => "usage error", + NmanError::Execution => "Couldn't execute required command", } } } @@ -136,7 +138,7 @@ fn build_man_page(drv: DrvWithOutput, section: &str, page: &str, tempdir: &TempD .arg(tempdir.as_ref().join("build-result")) .arg("--indirect") .output() - .map_err(|_| NmanError::Build)?; + .map_err(|_| NmanError::Execution)?; if !build.status.success() { return Err(NmanError::Build); @@ -182,7 +184,7 @@ fn open_man_page(attr: &str, section: &str, page: &str) -> Result<(), NmanError> .arg(tmpdir.as_ref().join("instantiation-result")) .arg("--indirect") .output() - .map_err(|_| NmanError::Instantiate)?; + .map_err(|_| NmanError::Execution)?; if !inst.status.success() { return Err(NmanError::Instantiate); @@ -219,7 +221,8 @@ fn open_man_page(attr: &str, section: &str, page: &str) -> Result<(), NmanError> return match res { Ok(true) => Ok(()), - _ => Err(NmanError::Man), + Ok(false) => Err(NmanError::Man), + Err(_) => Err(NmanError::Execution), }; }, } -- cgit 1.4.1