diff options
| -rw-r--r-- | src/main.rs | 6 | ||||
| -rw-r--r-- | src/output.rs | 12 | 
2 files changed, 16 insertions, 2 deletions
| diff --git a/src/main.rs b/src/main.rs index 7d3c93d..c1c2bcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -89,6 +89,10 @@ pub struct Opt {      #[structopt(short = "v", long = "invert-match")]      invert: bool, +    /// Only show the name of matching files. +    #[structopt(short = "l", long = "files-with-matches")] +    file_name_only: bool, +      /// Disable colored output.      #[structopt(long = "no-color")]      no_color: bool, @@ -241,7 +245,7 @@ fn grep(opt: &Opt) -> Result<(), RuntimeError> {              s.spawn(move |_| {                  if is_log_file(&entry) {                      if let Some(result) = search_log(&entry, opt).unwrap() { -                        output::colored(io::stdout(), &result).unwrap(); +                        output::output(io::stdout(), opt, &result).unwrap();                      }                  }              }); diff --git a/src/output.rs b/src/output.rs index fcbda1b..148c088 100644 --- a/src/output.rs +++ b/src/output.rs @@ -1,8 +1,18 @@  use super::errors::RuntimeError; -use super::{FightOutcome, LogResult}; +use super::{FightOutcome, LogResult, Opt};  use std::io::Write; +/// Write the output to the given stream, according to the command line flags. +pub fn output<W: Write>(mut f: W, opt: &Opt, item: &LogResult) -> Result<(), RuntimeError> { +    if opt.file_name_only { +        writeln!(f, "{}", item.log_file.to_string_lossy())?; +    } else { +        colored(f, item)?; +    } +    Ok(()) +} +  /// Write the given log result to the given stream, using ANSI colors.  pub fn colored<W: Write>(mut f: W, item: &LogResult) -> Result<(), RuntimeError> {      use colored::Colorize; | 
