fix(complete): Use bin_name for subcommands

Bash completions for subcommands used package
name, which broke completions when the `bin_name`
was different.

Update the `custom_bin_name` test to reflect the
correct behavior.
This commit is contained in:
Sebastian Holmin 2024-01-19 10:25:30 +01:00
parent 6411995641
commit ba378e635c
2 changed files with 14 additions and 13 deletions

View file

@ -18,6 +18,8 @@ impl Generator for Bash {
.get_bin_name()
.expect("crate::generate should have set the bin_name");
let fn_name = bin_name.replace('-', "__");
w!(
buf,
format!(
@ -65,10 +67,10 @@ else
fi
",
name = bin_name,
cmd = bin_name.replace('-', "__"),
cmd = fn_name,
name_opts = all_options_for_path(cmd, bin_name),
name_opts_details = option_details_for_path(cmd, bin_name),
subcmds = all_subcommands(cmd),
subcmds = all_subcommands(cmd, &fn_name),
subcmd_details = subcommand_details(cmd)
)
.as_bytes()
@ -76,7 +78,7 @@ fi
}
}
fn all_subcommands(cmd: &Command) -> String {
fn all_subcommands(cmd: &Command, parent_fn_name: &str) -> String {
debug!("all_subcommands");
fn add_command(
@ -106,9 +108,8 @@ fn all_subcommands(cmd: &Command) -> String {
}
}
let mut subcmds = vec![];
let fn_name = cmd.get_name().replace('-', "__");
for subcmd in cmd.get_subcommands() {
add_command(&fn_name, subcmd, &mut subcmds);
add_command(parent_fn_name, subcmd, &mut subcmds);
}
subcmds.sort();

View file

@ -12,17 +12,17 @@ _bin-name() {
",$1")
cmd="bin__name"
;;
my__app,help)
cmd="my__app__help"
bin__name,help)
cmd="bin__name__help"
;;
my__app,test)
cmd="my__app__test"
bin__name,test)
cmd="bin__name__test"
;;
my__app__help,help)
cmd="my__app__help__help"
bin__name__help,help)
cmd="bin__name__help__help"
;;
my__app__help,test)
cmd="my__app__help__test"
bin__name__help,test)
cmd="bin__name__help__test"
;;
*)
;;