diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/src/main.rs b/src/main.rs index 502d98e..c776336 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,9 +7,8 @@ extern crate evtclib; extern crate regex; extern crate walkdir; -use std::fmt; use std::fs::File; -use std::io::BufReader; +use std::io::{self, BufReader}; use std::path::PathBuf; use std::str::FromStr; @@ -23,6 +22,8 @@ use evtclib::{AgentKind, AgentName, EventKind, Log}; mod errors; use errors::RuntimeError; +mod output; + #[derive(StructOpt, Debug)] #[structopt(name = "raidgrep")] struct Opt { @@ -66,7 +67,7 @@ impl FromStr for SearchField { } #[derive(Debug, Clone)] -struct LogResult { +pub struct LogResult { log_file: PathBuf, time: NaiveDateTime, boss_name: String, @@ -74,39 +75,13 @@ struct LogResult { } #[derive(Debug, Clone)] -struct Player { +pub struct Player { account_name: String, character_name: String, profession: String, subgroup: u8, } -impl fmt::Display for LogResult { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - use colored::Colorize; - writeln!(f, "{}: {:?}", "File".green(), self.log_file)?; - writeln!( - f, - "{}: {} - {}: {}", - "Date".green(), - self.time, - "Boss".green(), - self.boss_name - )?; - for player in &self.players { - writeln!( - f, - " {:2} {:20} {:19} {}", - player.subgroup, - player.account_name.yellow(), - player.character_name.cyan(), - player.profession - )?; - } - Ok(()) - } -} - fn main() { let opt = Opt::from_args(); let result = grep(&opt); @@ -132,7 +107,7 @@ fn grep(opt: &Opt) -> Result<(), RuntimeError> { let entry = entry?; if is_log_file(&entry) { if let Some(result) = search_log(&entry, opt)? { - println!("{}", result); + output::colored(io::stdout(), &result)?; } } } |