diff options
-rw-r--r-- | src/edit.rs | 25 | ||||
-rw-r--r-- | 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<String> { 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 @@ -26,6 +26,15 @@ pub enum Error { 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(), )] |