From daa157b5f99c064eac7cd4593e4ec07bb8fd9bef Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Tue, 28 Nov 2023 16:14:22 -0500 Subject: core: actually implement --sortr=path This is an embarrassing oversight. A `todo!()` actually made its way into a release! Oof. This was working in ripgrep 13, but I had redone some aspects of sorting and this just got left undone. Fixes #2664 --- CHANGELOG.md | 10 ++++++++++ crates/core/flags/hiargs.rs | 8 +++++++- tests/feature.rs | 11 +++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8ef0e67..366f904e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +14.0.3 (2023-11-28) +=================== +This is a patch release with a bug fix for the `--sortr` flag. + +Bug fixes: + +* [BUG #2664](https://github.com/BurntSushi/ripgrep/issues/2664): + Fix `--sortr=path`. I left a `todo!()` in the source. Oof. + + 14.0.2 (2023-11-27) =================== This is a patch release with a few small bug fixes. diff --git a/crates/core/flags/hiargs.rs b/crates/core/flags/hiargs.rs index 59a178e4..e027a2c9 100644 --- a/crates/core/flags/hiargs.rs +++ b/crates/core/flags/hiargs.rs @@ -771,7 +771,13 @@ impl HiArgs { let Some(ref sort) = self.sort else { return Box::new(haystacks) }; let mut with_timestamps: Vec<_> = match sort.kind { SortModeKind::Path if !sort.reverse => return Box::new(haystacks), - SortModeKind::Path => todo!(), + SortModeKind::Path => { + let mut haystacks = haystacks.collect::>(); + haystacks.sort_by(|ref h1, ref h2| { + h1.path().cmp(h2.path()).reverse() + }); + return Box::new(haystacks.into_iter()); + } SortModeKind::LastModified => { attach_timestamps(haystacks, |md| md.modified()).collect() } diff --git a/tests/feature.rs b/tests/feature.rs index e2786854..b0a70acc 100644 --- a/tests/feature.rs +++ b/tests/feature.rs @@ -356,6 +356,17 @@ rgtest!(f263_sort_files, |dir: Dir, mut cmd: TestCommand| { eqnice!(expected, cmd.arg("--sort-files").arg("test").stdout()); }); +// See: https://github.com/BurntSushi/ripgrep/issues/263 +rgtest!(f263_sort_files_reverse, |dir: Dir, mut cmd: TestCommand| { + dir.create("foo", "test"); + dir.create("abc", "test"); + dir.create("zoo", "test"); + dir.create("bar", "test"); + + let expected = "zoo:test\nfoo:test\nbar:test\nabc:test\n"; + eqnice!(expected, cmd.arg("--sortr=path").arg("test").stdout()); +}); + // See: https://github.com/BurntSushi/ripgrep/issues/275 rgtest!(f275_pathsep, |dir: Dir, mut cmd: TestCommand| { dir.create_dir("foo"); -- cgit v1.2.3