diff --git a/clap_complete/src/shells/bash.rs b/clap_complete/src/shells/bash.rs index 726078ab..708a2144 100644 --- a/clap_complete/src/shells/bash.rs +++ b/clap_complete/src/shells/bash.rs @@ -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(); diff --git a/clap_complete/tests/snapshots/custom_bin_name.bash b/clap_complete/tests/snapshots/custom_bin_name.bash index cf03b275..9ba9e9a2 100644 --- a/clap_complete/tests/snapshots/custom_bin_name.bash +++ b/clap_complete/tests/snapshots/custom_bin_name.bash @@ -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" ;; *) ;;