feat: show subcommands after hostnames in shell completion
Release / release (push) Successful in 48s
Release / release (push) Successful in 48s
Use ShellCompDirectiveKeepOrder so fish/zsh/bash preserve the returned order instead of sorting alphabetically. ValidArgsFunction now appends subcommand names (with their short descriptions) after all hostname entries, so hosts always appear first in the completion list. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+11
-5
@@ -199,12 +199,18 @@ func rootCmd() *cobra.Command {
|
||||
}
|
||||
c := cache.New(cfg.Cache.Path, cfg.Cache.TTL)
|
||||
_ = c.Load()
|
||||
entries := c.Search(toComplete)
|
||||
names := make([]cobra.Completion, len(entries))
|
||||
for i, e := range entries {
|
||||
names[i] = cobra.Completion(e.Name)
|
||||
|
||||
var completions []cobra.Completion
|
||||
for _, e := range c.Search(toComplete) {
|
||||
completions = append(completions, cobra.Completion(e.Name))
|
||||
}
|
||||
return names, cobra.ShellCompDirectiveNoFileComp
|
||||
// Subcommands at the end, after all hostnames.
|
||||
for _, sub := range cmd.Commands() {
|
||||
if sub.IsAvailableCommand() && strings.HasPrefix(sub.Name(), toComplete) {
|
||||
completions = append(completions, cobra.Completion(sub.Name()+"\t"+sub.Short))
|
||||
}
|
||||
}
|
||||
return completions, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveKeepOrder
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user