aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs37
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)?;
}
}
}