diff options
author | Andrew Gallant <jamslam@gmail.com> | 2018-07-22 11:05:24 -0400 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2018-07-22 11:05:24 -0400 |
commit | 22ac2e056e1826957dddfaac6e45dadc4414bbe1 (patch) | |
tree | e6044498917a89b8fea023df2609f2d4329906fc | |
parent | 03af61fc7bb384cb594359fee806912ee5e57a98 (diff) |
ripgrep: stop early when --files --quiet is used
This commit tweaks the implementation of the --files flag to stop early
when --quiet is provided.
Fixes #907
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | src/app.rs | 3 | ||||
-rw-r--r-- | src/main.rs | 9 |
3 files changed, 13 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c5ee469a..c3b72478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,6 +84,9 @@ Bug fixes: Upgrade `grep` crate to `regex-syntax 0.5.0`. * [BUG #893](https://github.com/BurntSushi/ripgrep/issues/893): Improve support for git submodules. +* [BUG #907](https://github.com/BurntSushi/ripgrep/issues/907): + ripgrep will now stop traversing after the first file when `--quiet --files` + is used. * [BUG #918](https://github.com/BurntSushi/ripgrep/issues/918): Don't skip tar archives when `-z/--search-zip` is used. * [BUG #934](https://github.com/BurntSushi/ripgrep/issues/934): @@ -1402,6 +1402,9 @@ fn flag_quiet(args: &mut Vec<RGArg>) { Do not print anything to stdout. If a match is found in a file, then ripgrep will stop searching. This is useful when ripgrep is used only for its exit code (which will be an error if no matches are found). + +When --files is used, then ripgrep will stop finding files after finding the +first file that matches all ignore rules. "); let arg = RGArg::switch("quiet").short("q") .help(SHORT).long_help(LONG); diff --git a/src/main.rs b/src/main.rs index 73bc8c23..af22373e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -245,6 +245,9 @@ fn run_files_parallel(args: Arc<Args>) -> Result<u64> { args.no_ignore_messages(), ) { tx.send(dent).unwrap(); + if args.quiet() { + return ignore::WalkState::Quit + } } ignore::WalkState::Continue }) @@ -266,10 +269,12 @@ fn run_files_one_thread(args: &Arc<Args>) -> Result<u64> { None => continue, Some(dent) => dent, }; - if !args.quiet() { + file_count += 1; + if args.quiet() { + break; + } else { printer.path(dent.path()); } - file_count += 1; } Ok(file_count) } |