diff options
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/error.rs b/src/error.rs index 517defd..3a06758 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,7 +1,4 @@ -use std::{ - fmt::{self, Write}, - path::PathBuf, -}; +use std::{fmt, path::PathBuf}; use crate::replacer::InvalidReplaceCapture; @@ -13,37 +10,38 @@ pub enum Error { File(#[from] std::io::Error), #[error("failed to move file: {0}")] TempfilePersist(#[from] tempfile::PersistError), - #[error("file doesn't have parent path: {0}")] + #[error("invalid path: {0}")] InvalidPath(PathBuf), - #[error("failed processing files:\n{0}")] - FailedProcessing(FailedJobs), #[error("{0}")] InvalidReplaceCapture(#[from] InvalidReplaceCapture), + #[error("{0}")] + FailedJobs(FailedJobs), } -pub struct FailedJobs(Vec<(PathBuf, Error)>); - -impl From<Vec<(PathBuf, Error)>> for FailedJobs { - fn from(vec: Vec<(PathBuf, Error)>) -> Self { - Self(vec) +// pretty-print the error +impl fmt::Debug for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self) } } +pub type Result<T, E = Error> = std::result::Result<T, E>; + +pub struct FailedJobs(pub Vec<(PathBuf, Error)>); + impl fmt::Display for FailedJobs { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.write_str("\tFailedJobs(\n")?; - for (path, err) in &self.0 { - f.write_str(&format!("\t{:?}: {}\n", path, err))?; + f.write_str("Failed processing some inputs\n")?; + for (source, error) in &self.0 { + writeln!(f, " {}: {}", source.display(), error)?; } - f.write_char(')') + + Ok(()) } } -// pretty-print the error -impl std::fmt::Debug for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { +impl fmt::Debug for FailedJobs { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self) } } - -pub type Result<T, E = Error> = std::result::Result<T, E>; |