diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/errors.rs | 23 | ||||
-rw-r--r-- | src/main.rs | 33 |
2 files changed, 9 insertions, 47 deletions
diff --git a/src/errors.rs b/src/errors.rs deleted file mode 100644 index 286a92e..0000000 --- a/src/errors.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std; -use walkdir; - -quick_error! { - #[derive(Debug)] - pub enum RuntimeError { - Walkdir(err: walkdir::Error) { - from() - cause(err) - display("File enumeration error: {}", err) - } - Io(err: std::io::Error) { - from() - cause(err) - display("I/O error: {}", err) - } - Parsing(err: evtclib::raw::ParseError) { - from() - cause(err) - display("Parsing error: {}", err) - } - } -} diff --git a/src/main.rs b/src/main.rs index dbb8f36..eeecdc8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,18 +1,5 @@ -extern crate structopt; -#[macro_use] -extern crate quick_error; -extern crate chrono; -extern crate colored; -extern crate evtclib; -extern crate humantime; -extern crate num_traits; -extern crate rayon; -extern crate regex; -extern crate walkdir; -extern crate zip; - use std::fs::File; -use std::io::{self, BufReader, Read, Seek}; +use std::io::{BufReader, Read, Seek}; use std::path::PathBuf; use std::str::FromStr; @@ -21,12 +8,10 @@ use num_traits::cast::FromPrimitive; use regex::Regex; use structopt::StructOpt; use walkdir::{DirEntry, WalkDir}; +use anyhow::{anyhow, Result}; use evtclib::{AgentKind, AgentName, EventKind, Log}; -mod errors; -use errors::RuntimeError; - mod output; mod filters; @@ -102,7 +87,7 @@ pub struct Opt { #[structopt( short = "a", long = "younger", - parse(try_from_str = "parse_time_arg") + parse(try_from_str = parse_time_arg) )] after: Option<NaiveDateTime>, @@ -110,7 +95,7 @@ pub struct Opt { #[structopt( short = "b", long = "older", - parse(try_from_str = "parse_time_arg") + parse(try_from_str = parse_time_arg) )] before: Option<NaiveDateTime>, @@ -119,7 +104,7 @@ pub struct Opt { short = "w", long = "weekdays", default_value = "*", - parse(try_from_str = "try_from_str_simple_error") + parse(try_from_str = try_from_str_simple_error) )] weekdays: CommaSeparatedList<Weekday>, @@ -208,7 +193,7 @@ impl FromStr for FightOutcome { } } -fn parse_time_arg(input: &str) -> Result<NaiveDateTime, &'static str> { +fn parse_time_arg(input: &str) -> Result<NaiveDateTime> { if let Ok(duration) = humantime::parse_duration(input) { let now = chrono::Local::now().naive_local(); let chrono_dur = Duration::from_std(duration).expect("Duration out of range!"); @@ -221,7 +206,7 @@ fn parse_time_arg(input: &str) -> Result<NaiveDateTime, &'static str> { .as_secs(); return Ok(NaiveDateTime::from_timestamp(timestamp as i64, 0)); } - Err("unknown time format") + Err(anyhow!("unknown time format")) } fn try_from_str_simple_error<T: FromStr>(input: &str) -> Result<T, String> @@ -284,7 +269,7 @@ fn is_log_file(entry: &DirEntry) -> bool { } /// Run the grep search with the given options. -fn grep(opt: &Opt) -> Result<(), RuntimeError> { +fn grep(opt: &Opt) -> Result<()> { let pipeline = &output::build_pipeline(opt); rayon::scope(|s| { let walker = WalkDir::new(&opt.path); @@ -312,7 +297,7 @@ fn grep(opt: &Opt) -> Result<(), RuntimeError> { /// If the log matches, returns `Ok(Some(..))`. /// If the log doesn't match, returns `Ok(None)`. /// If there was a fatal error, returns `Err(..)`. -fn search_log(entry: &DirEntry, opt: &Opt) -> Result<Option<LogResult>, RuntimeError> { +fn search_log(entry: &DirEntry, opt: &Opt) -> Result<Option<LogResult>> { let file_stream = BufReader::new(File::open(entry.path())?); let is_zip = entry .file_name() |