diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-07-05 17:27:46 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-07-05 17:27:46 -0400 |
commit | a3da3774a3befda7b45ec19e197e5029a3c291b2 (patch) | |
tree | 06226dace9e73e3919f77508d7cca73451b7c977 | |
parent | 390245a36dd9949f6641afdc8e060c9b2f30ca43 (diff) | |
download | rbw-a3da3774a3befda7b45ec19e197e5029a3c291b2.tar.gz rbw-a3da3774a3befda7b45ec19e197e5029a3c291b2.zip |
better error message when editor is set incorrectly
-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(), )] |