Skip to content

Commit 60fbfb9

Browse files
committed
Auto merge of #14532 - shannmu:_cargo_benchmark_names, r=epage
feat: Add custom completer for completing benchmark names ### What does this PR try to resolve? Tracking issue #14520 Add custom completer for `cargo build --bench=<TAB>`
2 parents 1eb49a1 + 9d08d4a commit 60fbfb9

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/cargo/util/command_prelude.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,9 @@ pub trait CommandExt: Sized {
163163
)
164164
._arg(flag("benches", benches).help_heading(heading::TARGET_SELECTION))
165165
._arg(
166-
optional_multi_opt("bench", "NAME", bench).help_heading(heading::TARGET_SELECTION),
166+
optional_multi_opt("bench", "NAME", bench)
167+
.help_heading(heading::TARGET_SELECTION)
168+
.add(clap_complete::ArgValueCandidates::new(get_bench_candidates)),
167169
)
168170
._arg(flag("all-targets", all).help_heading(heading::TARGET_SELECTION))
169171
}
@@ -1046,6 +1048,17 @@ pub fn lockfile_path(
10461048
return Ok(Some(path));
10471049
}
10481050

1051+
fn get_bench_candidates() -> Vec<clap_complete::CompletionCandidate> {
1052+
get_targets_from_metadata()
1053+
.unwrap_or_default()
1054+
.into_iter()
1055+
.filter_map(|target| match target.kind() {
1056+
TargetKind::Bench => Some(clap_complete::CompletionCandidate::new(target.name())),
1057+
_ => None,
1058+
})
1059+
.collect::<Vec<_>>()
1060+
}
1061+
10491062
fn get_test_candidates() -> Vec<clap_complete::CompletionCandidate> {
10501063
get_targets_from_metadata()
10511064
.unwrap_or_default()

0 commit comments

Comments
 (0)