1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2025-05-19 05:33:04 +02:00

Merge pull request #111 from gsquire/max-depth

Max depth option
This commit is contained in:
Andrew Gallant 2016-09-27 19:46:29 -04:00 committed by GitHub
commit 3550f2e29a
3 changed files with 30 additions and 1 deletions

View File

@ -136,6 +136,10 @@ the raw speed of grep.
-L, --follow -L, --follow
: Follow symlinks. : Follow symlinks.
--maxdepth *NUM*
: Descend at most NUM directories below the command line arguments.
A value of zero searches only the starting-points themselves.
--mmap --mmap
: Search using memory maps when possible. This is enabled by default : Search using memory maps when possible. This is enabled by default
when ripgrep thinks it will be faster. (Note that mmap searching when ripgrep thinks it will be faster. (Note that mmap searching

View File

@ -136,6 +136,10 @@ Less common options:
-L, --follow -L, --follow
Follow symlinks. Follow symlinks.
--maxdepth NUM
Descend at most NUM directories below the command line arguments.
A value of zero only searches the starting-points themselves.
--mmap --mmap
Search using memory maps when possible. This is enabled by default Search using memory maps when possible. This is enabled by default
when ripgrep thinks it will be faster. (Note that mmap searching when ripgrep thinks it will be faster. (Note that mmap searching
@ -222,6 +226,7 @@ pub struct RawArgs {
flag_invert_match: bool, flag_invert_match: bool,
flag_line_number: bool, flag_line_number: bool,
flag_fixed_strings: bool, flag_fixed_strings: bool,
flag_maxdepth: Option<usize>,
flag_mmap: bool, flag_mmap: bool,
flag_no_heading: bool, flag_no_heading: bool,
flag_no_ignore: bool, flag_no_ignore: bool,
@ -272,6 +277,7 @@ pub struct Args {
invert_match: bool, invert_match: bool,
line_number: bool, line_number: bool,
line_per_match: bool, line_per_match: bool,
maxdepth: Option<usize>,
mmap: bool, mmap: bool,
no_ignore: bool, no_ignore: bool,
no_ignore_parent: bool, no_ignore_parent: bool,
@ -399,6 +405,7 @@ impl RawArgs {
invert_match: self.flag_invert_match, invert_match: self.flag_invert_match,
line_number: !self.flag_no_line_number && self.flag_line_number, line_number: !self.flag_no_line_number && self.flag_line_number,
line_per_match: self.flag_vimgrep, line_per_match: self.flag_vimgrep,
maxdepth: self.flag_maxdepth,
mmap: mmap, mmap: mmap,
no_ignore: no_ignore, no_ignore: no_ignore,
no_ignore_parent: no_ignore_parent:
@ -681,7 +688,10 @@ impl Args {
/// Create a new recursive directory iterator at the path given. /// Create a new recursive directory iterator at the path given.
pub fn walker(&self, path: &Path) -> Result<walk::Iter> { pub fn walker(&self, path: &Path) -> Result<walk::Iter> {
let wd = WalkDir::new(path).follow_links(self.follow); let mut wd = WalkDir::new(path).follow_links(self.follow);
if let Some(maxdepth) = self.maxdepth {
wd = wd.max_depth(maxdepth);
}
let mut ig = Ignore::new(); let mut ig = Ignore::new();
// Only register ignore rules if this is a directory. If it's a file, // Only register ignore rules if this is a directory. If it's a file,
// then it was explicitly given by the end user, so we always search // then it was explicitly given by the end user, so we always search

View File

@ -831,6 +831,21 @@ sherlock\x00can extract a clew from a wisp of straw or a flake of cigar ash;
assert_eq!(lines, expected); assert_eq!(lines, expected);
}); });
// See: https://github.com/BurntSushi/ripgrep/issues/109
clean!(max_depth, "far", ".", |wd: WorkDir, mut cmd: Command| {
wd.create_dir("one");
wd.create("one/pass", "far");
wd.create_dir("one/too");
wd.create("one/too/many", "far");
cmd.arg("--maxdepth").arg("2");
let lines: String = wd.stdout(&mut cmd);
let expected = path("one/pass:far\n");
assert_eq!(lines, expected);
});
#[test] #[test]
fn binary_nosearch() { fn binary_nosearch() {
let wd = WorkDir::new("binary_nosearch"); let wd = WorkDir::new("binary_nosearch");