From 0345461412f9995f2862b6289e5b20021beaa38e Mon Sep 17 00:00:00 2001 From: relrelb Date: Thu, 3 Aug 2023 23:02:48 +0300 Subject: [PATCH] Add shell completion for `--profile` Signed-off-by: Ariel Bachar Signed-off-by: relrelb --- cmd/compose/completion.go | 21 +++++++++++++++++++++ cmd/compose/compose.go | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/cmd/compose/completion.go b/cmd/compose/completion.go index 3cf6a548c..f5461ff77 100644 --- a/cmd/compose/completion.go +++ b/cmd/compose/completion.go @@ -17,6 +17,7 @@ package compose import ( + "sort" "strings" "github.com/docker/compose/v2/pkg/api" @@ -65,3 +66,23 @@ func completeProjectNames(backend api.Service) func(cmd *cobra.Command, args []s return values, cobra.ShellCompDirectiveNoFileComp } } + +func completeProfileNames(p *ProjectOptions) validArgsFn { + return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + project, err := p.ToProject(nil) + if err != nil { + return nil, cobra.ShellCompDirectiveNoFileComp + } + + allProfileNames := project.AllServices().GetProfiles() + sort.Strings(allProfileNames) + + var values []string + for _, profileName := range allProfileNames { + if strings.HasPrefix(profileName, toComplete) { + values = append(values, profileName) + } + } + return values, cobra.ShellCompDirectiveNoFileComp + } +} diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index d9a3c821a..82b4647b4 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -448,6 +448,10 @@ func RootCommand(streams command.Cli, backend api.Service) *cobra.Command { //no return []string{"yaml", "yml"}, cobra.ShellCompDirectiveFilterFileExt }, ) + c.RegisterFlagCompletionFunc( //nolint:errcheck + "profile", + completeProfileNames(&opts), + ) c.Flags().StringVar(&progress, "progress", buildx.PrinterModeAuto, fmt.Sprintf(`Set type of progress output (%s)`, strings.Join(printerModes, ", ")))