1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2025-03-17 20:28:03 +02:00

Don't ignore first path when using --files.

This is a docopt oddity, but probably not a bug. If --files is given,
then just interpret the pattern (if not empty) as the first file path.

Fixes #64.
This commit is contained in:
Andrew Gallant 2016-09-24 20:22:02 -04:00
parent b941c10b90
commit c8227e0cf3
2 changed files with 27 additions and 1 deletions

View File

@ -463,7 +463,7 @@ impl Args {
}
}
}
let raw: RawArgs =
let mut raw: RawArgs =
Docopt::new(USAGE)
.and_then(|d| d.argv(argv).version(Some(version())).decode())
.unwrap_or_else(|e| e.exit());
@ -478,6 +478,13 @@ impl Args {
errored!("failed to initialize logger: {}", err);
}
// *sigh*... If --files is given, then the first path ends up in
// pattern.
if raw.flag_files {
if !raw.arg_pattern.is_empty() {
raw.arg_path.insert(0, raw.arg_pattern.clone());
}
}
raw.to_args().map_err(From::from)
}

View File

@ -744,6 +744,25 @@ fn files() {
}
}
// See: https://github.com/BurntSushi/ripgrep/issues/64
#[test]
fn regression_64() {
let wd = WorkDir::new("regression_64");
wd.create_dir("dir");
wd.create_dir("foo");
wd.create("dir/abc", "");
wd.create("foo/abc", "");
let mut cmd = wd.command();
cmd.arg("--files").arg("foo");
let lines: String = wd.stdout(&mut cmd);
if cfg!(windows) {
assert_eq!(lines, "foo\\abc\n");
} else {
assert_eq!(lines, "foo/abc\n");
}
}
#[test]
fn type_list() {
let wd = WorkDir::new("type_list");