Skip to content

Commit 09a472e

Browse files
committed
refactor(cli): Pull out completion context creation
1 parent 6d221ef commit 09a472e

File tree

1 file changed

+27
-28
lines changed

1 file changed

+27
-28
lines changed

src/bin/cargo/cli.rs

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,9 @@ See '<bright-cyan,bold>cargo help</> <cyan><<command>></>' for more information
703703
.into_iter()
704704
.map(|t| clap_complete::CompletionCandidate::new(t))
705705
.collect::<Vec<_>>();
706-
candidates.extend(get_alias_candidates());
706+
if let Ok(gctx) = new_gctx_for_completions() {
707+
candidates.extend(get_alias_candidates(&gctx));
708+
}
707709
candidates
708710
}))
709711
.subcommands(commands::builtin())
@@ -726,33 +728,30 @@ fn get_toolchains_from_rustup() -> Vec<String> {
726728
stdout.lines().map(|line| format!("+{}", line)).collect()
727729
}
728730

729-
fn get_alias_candidates() -> Vec<clap_complete::CompletionCandidate> {
730-
if let Ok(gctx) = new_gctx_for_completions() {
731-
let alias_map = user_defined_aliases(&gctx);
732-
return alias_map
733-
.iter()
734-
.map(|(alias, cmd_info)| {
735-
let help_text = match cmd_info {
736-
CommandInfo::Alias { target } => {
737-
let cmd_str = target
738-
.iter()
739-
.map(String::as_str)
740-
.collect::<Vec<_>>()
741-
.join(" ");
742-
format!("alias for {}", cmd_str)
743-
}
744-
CommandInfo::BuiltIn { .. } => {
745-
unreachable!("BuiltIn command shouldn't appear in alias map")
746-
}
747-
CommandInfo::External { .. } => {
748-
unreachable!("External command shouldn't appear in alias map")
749-
}
750-
};
751-
clap_complete::CompletionCandidate::new(alias.clone()).help(Some(help_text.into()))
752-
})
753-
.collect();
754-
}
755-
Vec::new()
731+
fn get_alias_candidates(gctx: &GlobalContext) -> Vec<clap_complete::CompletionCandidate> {
732+
let alias_map = user_defined_aliases(gctx);
733+
alias_map
734+
.iter()
735+
.map(|(alias, cmd_info)| {
736+
let help_text = match cmd_info {
737+
CommandInfo::Alias { target } => {
738+
let cmd_str = target
739+
.iter()
740+
.map(String::as_str)
741+
.collect::<Vec<_>>()
742+
.join(" ");
743+
format!("alias for {}", cmd_str)
744+
}
745+
CommandInfo::BuiltIn { .. } => {
746+
unreachable!("BuiltIn command shouldn't appear in alias map")
747+
}
748+
CommandInfo::External { .. } => {
749+
unreachable!("External command shouldn't appear in alias map")
750+
}
751+
};
752+
clap_complete::CompletionCandidate::new(alias.clone()).help(Some(help_text.into()))
753+
})
754+
.collect()
756755
}
757756

758757
#[test]

0 commit comments

Comments
 (0)