From a3da3774a3befda7b45ec19e197e5029a3c291b2 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 5 Jul 2021 17:27:46 -0400 Subject: better error message when editor is set incorrectly --- src/edit.rs | 25 ++++++++++++++++--------- src/error.rs | 9 +++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/edit.rs b/src/edit.rs index cac8794..45e9534 100644 --- a/src/edit.rs +++ b/src/edit.rs @@ -38,15 +38,22 @@ pub fn edit(contents: &str, help: &str) -> Result { drop(fh); args.push(file.as_os_str()); - let res = std::process::Command::new(&editor) - .args(&args) - .status() - .unwrap(); - if !res.success() { - return Err(Error::FailedToRunEditor { - editor: editor.to_owned(), - res, - }); + let res = std::process::Command::new(&editor).args(&args).status(); + match res { + Ok(res) => { + if !res.success() { + return Err(Error::FailedToRunEditor { + editor: editor.to_owned(), + res, + }); + } + } + Err(err) => { + return Err(Error::FailedToFindEditor { + editor: editor.to_owned(), + err, + }) + } } let mut fh = std::fs::File::open(&file).unwrap(); diff --git a/src/error.rs b/src/error.rs index 82fdb49..bc97087 100644 --- a/src/error.rs +++ b/src/error.rs @@ -25,6 +25,15 @@ pub enum Error { #[error("failed to parse pinentry output ({out:?})")] FailedToParsePinentry { out: String }, + #[error( + "failed to run editor {}: {err}", + .editor.to_string_lossy(), + )] + FailedToFindEditor { + editor: std::path::PathBuf, + err: std::io::Error, + }, + #[error( "failed to run editor {}: {res:?}", .editor.to_string_lossy(), -- cgit v1.2.3