From e132410e7a526239389d3e8dedbcf5a84f0503b5 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 18 May 2019 01:36:35 +0200 Subject: add support for -l to only output the file name --- src/main.rs | 6 +++++- src/output.rs | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') 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(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(mut f: W, item: &LogResult) -> Result<(), RuntimeError> { use colored::Colorize; -- cgit v1.2.3