summaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs40
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>;