aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs6
-rw-r--r--src/output.rs12
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;