summaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
authorsharkdp <davidpeter@web.de>2020-04-22 21:45:47 +0200
committerDavid Peter <sharkdp@users.noreply.github.com>2020-04-22 23:55:28 +0200
commit702cb198da986203aefe9c2fa6d024d8cbe96346 (patch)
treeee9944f2127da9df401fbd3e641343987d5680d6 /src/error.rs
parent5f826419d13e74fcdea851947364a1d5d69d152e (diff)
Rename error module
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs
new file mode 100644
index 00000000..cabf4f2a
--- /dev/null
+++ b/src/error.rs
@@ -0,0 +1,34 @@
+use error_chain::error_chain;
+
+error_chain! {
+ foreign_links {
+ Clap(::clap::Error) #[cfg(feature = "application")];
+ Io(::std::io::Error);
+ SyntectError(::syntect::LoadingError);
+ ParseIntError(::std::num::ParseIntError);
+ GlobParsingError(::globset::Error);
+ SerdeYamlError(::serde_yaml::Error);
+ }
+}
+
+pub fn default_error_handler(error: &Error) {
+ use ansi_term::Colour::Red;
+
+ match error {
+ Error(ErrorKind::Io(ref io_error), _)
+ if io_error.kind() == ::std::io::ErrorKind::BrokenPipe =>
+ {
+ ::std::process::exit(0);
+ }
+ Error(ErrorKind::SerdeYamlError(_), _) => {
+ eprintln!(
+ "{}: Error while parsing metadata.yaml file: {}",
+ Red.paint("[bat error]"),
+ error
+ );
+ }
+ _ => {
+ eprintln!("{}: {}", Red.paint("[bat error]"), error);
+ }
+ };
+}