Skip to content

Commit 3785198

Browse files
committed
cli/command/completion: change FileNames to return a cobra.CompletionFunc
It's adding a slight indirection by constructing a function when called, but makes the completion functions more consistent, the signature easier to read, and making the return type a [cobra.CompletionFunc] makes it more transparent what it's intended for, and helps discovery of functions that provide completion. [cobra.CompletionFunc]: https://pkg.go.dev/github.com/spf13/cobra#CompletionFunc Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 531f7e1 commit 3785198

File tree

6 files changed

+9
-7
lines changed

6 files changed

+9
-7
lines changed

cli/command/completion/functions.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,10 @@ func FromList(options ...string) cobra.CompletionFunc {
136136
// FileNames is a convenience function to use [cobra.ShellCompDirectiveDefault],
137137
// which indicates to let the shell perform its default behavior after
138138
// completions have been provided.
139-
func FileNames(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
140-
return nil, cobra.ShellCompDirectiveDefault
139+
func FileNames() cobra.CompletionFunc {
140+
return func(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
141+
return nil, cobra.ShellCompDirectiveDefault
142+
}
141143
}
142144

143145
var commonPlatforms = []string{

cli/command/completion/functions_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func TestCompleteEnvVarNames(t *testing.T) {
185185
}
186186

187187
func TestCompleteFileNames(t *testing.T) {
188-
values, directives := FileNames(nil, nil, "")
188+
values, directives := FileNames()(nil, nil, "")
189189
assert.Check(t, is.Equal(directives, cobra.ShellCompDirectiveDefault))
190190
assert.Check(t, is.Len(values, 0))
191191
}

cli/command/container/completion.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func addCompletions(cmd *cobra.Command, dockerCLI completion.APIClientProvider)
123123
_ = cmd.RegisterFlagCompletionFunc("cap-drop", completeLinuxCapabilityNames)
124124
_ = cmd.RegisterFlagCompletionFunc("cgroupns", completeCgroupns())
125125
_ = cmd.RegisterFlagCompletionFunc("env", completion.EnvVarNames())
126-
_ = cmd.RegisterFlagCompletionFunc("env-file", completion.FileNames)
126+
_ = cmd.RegisterFlagCompletionFunc("env-file", completion.FileNames())
127127
_ = cmd.RegisterFlagCompletionFunc("ipc", completeIpc(dockerCLI))
128128
_ = cmd.RegisterFlagCompletionFunc("link", completeLink(dockerCLI))
129129
_ = cmd.RegisterFlagCompletionFunc("log-driver", completeLogDriver(dockerCLI))

cli/command/container/exec.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func newExecCommand(dockerCLI command.Cli) *cobra.Command {
7979
flags.SetAnnotation("workdir", "version", []string{"1.35"})
8080

8181
_ = cmd.RegisterFlagCompletionFunc("env", completion.EnvVarNames())
82-
_ = cmd.RegisterFlagCompletionFunc("env-file", completion.FileNames)
82+
_ = cmd.RegisterFlagCompletionFunc("env-file", completion.FileNames())
8383

8484
return cmd
8585
}

cli/command/context/import.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func newImportCommand(dockerCLI command.Cli) *cobra.Command {
2121
return runImport(dockerCLI, args[0], args[1])
2222
},
2323
// TODO(thaJeztah): this should also include "-"
24-
ValidArgsFunction: completion.FileNames,
24+
ValidArgsFunction: completion.FileNames(),
2525
DisableFlagsInUseLine: true,
2626
}
2727
return cmd

cli/command/service/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func newCreateCommand(dockerCLI command.Cli) *cobra.Command {
8383

8484
_ = cmd.RegisterFlagCompletionFunc(flagMode, completion.FromList("replicated", "global", "replicated-job", "global-job"))
8585
_ = cmd.RegisterFlagCompletionFunc(flagEnv, completion.EnvVarNames()) // TODO(thaJeztah): flagEnvRemove (needs to read current env-vars on the service)
86-
_ = cmd.RegisterFlagCompletionFunc(flagEnvFile, completion.FileNames)
86+
_ = cmd.RegisterFlagCompletionFunc(flagEnvFile, completion.FileNames())
8787
_ = cmd.RegisterFlagCompletionFunc(flagNetwork, completion.NetworkNames(dockerCLI))
8888
_ = cmd.RegisterFlagCompletionFunc(flagRestartCondition, completion.FromList("none", "on-failure", "any"))
8989
_ = cmd.RegisterFlagCompletionFunc(flagRollbackOrder, completion.FromList("start-first", "stop-first"))

0 commit comments

Comments
 (0)