mirror of
https://github.com/ouch-org/ouch.git
synced 2025-06-06 19:45:29 +00:00
Show better error messages
This commit is contained in:
parent
2dc828c0ff
commit
b002de78d9
@ -179,7 +179,6 @@ impl TryFrom<clap::ArgMatches<'static>> for Command {
|
||||
output: Some(File {
|
||||
path: output_file.into(),
|
||||
contents_in_memory: None,
|
||||
// extension: output_file_extension.ok(),
|
||||
extension: Some(output_file_extension.unwrap()),
|
||||
}),
|
||||
})
|
||||
|
@ -36,8 +36,7 @@ impl BzipCompressor {
|
||||
let bytes = match file.contents_in_memory {
|
||||
Some(bytes) => bytes,
|
||||
None => {
|
||||
// TODO: error message,
|
||||
return Err(crate::Error::InvalidInput);
|
||||
return Err(crate::Error::InternalError);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -14,8 +14,8 @@ impl TarCompressor {
|
||||
// TODO: implement this
|
||||
fn make_archive_from_memory(_input: File) -> crate::Result<Vec<u8>> {
|
||||
println!(
|
||||
"{}: .tar.tar and .zip.tar is currently unimplemented.",
|
||||
"error".red()
|
||||
"{} .tar.tar and .zip.tar is currently unimplemented.",
|
||||
"[ERROR]".red()
|
||||
);
|
||||
Err(crate::Error::InvalidZipArchive(""))
|
||||
}
|
||||
|
17
src/error.rs
17
src/error.rs
@ -18,6 +18,7 @@ pub enum Error {
|
||||
InputsMustHaveBeenDecompressible(PathBuf),
|
||||
InternalError,
|
||||
CompressingRootFolder,
|
||||
WalkdirError
|
||||
}
|
||||
|
||||
pub type Result<T> = std::result::Result<T, Error>;
|
||||
@ -38,25 +39,33 @@ impl fmt::Debug for Error {
|
||||
|
||||
impl fmt::Display for Error {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
match self {
|
||||
Error::MissingExtensionError(filename) => {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
write!(f, "cannot compress to \'{}\', likely because it has an unsupported (or missing) extension.", filename)
|
||||
}
|
||||
Error::InputsMustHaveBeenDecompressible(file) => {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
write!(f, "file '{:?}' is not decompressible", file)
|
||||
}
|
||||
Error::WalkdirError => {
|
||||
// Already printed in the From block
|
||||
write!(f, "")
|
||||
}
|
||||
Error::FileNotFound(file) => {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
// TODO: check if file == ""
|
||||
write!(f, "file {:?} not found!", file)
|
||||
}
|
||||
Error::CompressingRootFolder => {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
let spacing = " ";
|
||||
writeln!(f, "It seems you're trying to compress the root folder.")?;
|
||||
writeln!(f, "{}This is unadvisable since ouch does compressions in-memory.", spacing)?;
|
||||
write!(f, "{}Use a more appropriate tool for this, such as {}.", spacing, "rsync".green())
|
||||
}
|
||||
Error::InternalError => {
|
||||
write!(f, "{} ", "[ERROR]".red())?;
|
||||
write!(f, "You've reached an internal error! This really should not have happened.\nPlease file an issue at {}", "https://github.com/vrmiguel/ouch".green())
|
||||
}
|
||||
_err => {
|
||||
@ -74,7 +83,7 @@ impl From<std::io::Error> for Error {
|
||||
std::io::ErrorKind::PermissionDenied => Self::PermissionDenied,
|
||||
std::io::ErrorKind::AlreadyExists => Self::AlreadyExists,
|
||||
_other => {
|
||||
println!("{}: {}", "IO error".red(), err);
|
||||
println!("{} {}", "[IO error]".red(), err);
|
||||
Self::IoError
|
||||
}
|
||||
}
|
||||
@ -95,7 +104,7 @@ impl From<zip::result::ZipError> for Error {
|
||||
|
||||
impl From<walkdir::Error> for Error {
|
||||
fn from(err: walkdir::Error) -> Self {
|
||||
eprintln!("{}: {}", "error".red(), err);
|
||||
Self::InvalidInput
|
||||
eprintln!("{} {}", "[ERROR]".red(), err);
|
||||
Self::WalkdirError
|
||||
}
|
||||
}
|
||||
|
@ -29,10 +29,10 @@ impl Evaluator {
|
||||
None => {
|
||||
// This block *should* be unreachable
|
||||
eprintln!(
|
||||
"{}: reached Evaluator::get_decompressor without known extension.",
|
||||
"internal error".red()
|
||||
"{} reached Evaluator::get_decompressor without known extension.",
|
||||
"[internal error]".red()
|
||||
);
|
||||
return Err(crate::Error::InvalidInput);
|
||||
return Err(crate::Error::InternalError);
|
||||
}
|
||||
};
|
||||
|
||||
@ -71,8 +71,8 @@ impl Evaluator {
|
||||
None => {
|
||||
// This block *should* be unreachable
|
||||
eprintln!(
|
||||
"{}: reached Evaluator::get_decompressor without known extension.",
|
||||
"internal error".red()
|
||||
"{} reached Evaluator::get_decompressor without known extension.",
|
||||
"[internal error]".red()
|
||||
);
|
||||
return Err(crate::Error::InvalidInput);
|
||||
}
|
||||
|
@ -13,11 +13,6 @@ where
|
||||
{
|
||||
let exists = path.as_ref().exists();
|
||||
if !exists {
|
||||
eprintln!(
|
||||
"{}: could not find file {:?}",
|
||||
"[ERROR]".red(),
|
||||
path.as_ref()
|
||||
);
|
||||
return Err(crate::Error::FileNotFound(PathBuf::from(path.as_ref())));
|
||||
}
|
||||
Ok(())
|
||||
|
Loading…
x
Reference in New Issue
Block a user