Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict completion to one suggestion on run, history, push, tag #5818

Merged
merged 1 commit into from
Feb 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion cli/command/completion/functions.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@ type APIClientProvider interface {
}

// ImageNames offers completion for images present within the local store
func ImageNames(dockerCLI APIClientProvider) ValidArgsFn {
func ImageNames(dockerCLI APIClientProvider, limit int) ValidArgsFn {
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
if limit > 0 && len(args) >= limit {
return nil, cobra.ShellCompDirectiveNoFileComp
}
list, err := dockerCLI.Client().ImageList(cmd.Context(), image.ListOptions{})
if err != nil {
return nil, cobra.ShellCompDirectiveError
Expand Down
2 changes: 1 addition & 1 deletion cli/command/completion/functions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ func TestCompleteImageNames(t *testing.T) {
}
return tc.images, nil
},
}})
}}, -1)

volumes, directives := comp(&cobra.Command{}, nil, "")
assert.Check(t, is.Equal(directives&tc.expDirective, tc.expDirective))
Expand Down
2 changes: 1 addition & 1 deletion cli/command/container/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func NewCreateCommand(dockerCli command.Cli) *cobra.Command {
Annotations: map[string]string{
"aliases": "docker container create, docker create",
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, -1),
}

flags := cmd.Flags()
Expand Down
2 changes: 1 addition & 1 deletion cli/command/container/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func NewRunCommand(dockerCli command.Cli) *cobra.Command {
}
return runRun(cmd.Context(), dockerCli, cmd.Flags(), &options, copts)
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, 1),
Annotations: map[string]string{
"category-top": "1",
"aliases": "docker container run, docker run",
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/history.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func NewHistoryCommand(dockerCli command.Cli) *cobra.Command {
opts.image = args[0]
return runHistory(cmd.Context(), dockerCli, opts)
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, 1),
Annotations: map[string]string{
"aliases": "docker image history, docker history",
},
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func newInspectCommand(dockerCli command.Cli) *cobra.Command {
opts.refs = args
return runInspect(cmd.Context(), dockerCli, opts)
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, -1),
}

flags := cmd.Flags()
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/push.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func NewPushCommand(dockerCli command.Cli) *cobra.Command {
"category-top": "6",
"aliases": "docker image push, docker push",
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, 1),
}

flags := cmd.Flags()
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/remove.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func NewRemoveCommand(dockerCli command.Cli) *cobra.Command {
RunE: func(cmd *cobra.Command, args []string) error {
return runRemove(cmd.Context(), dockerCli, opts, args)
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, -1),
Annotations: map[string]string{
"aliases": "docker image rm, docker image remove, docker rmi",
},
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/save.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func NewSaveCommand(dockerCli command.Cli) *cobra.Command {
Annotations: map[string]string{
"aliases": "docker image save, docker save",
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, -1),
}

flags := cmd.Flags()
Expand Down
2 changes: 1 addition & 1 deletion cli/command/image/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func NewTagCommand(dockerCli command.Cli) *cobra.Command {
Annotations: map[string]string{
"aliases": "docker image tag, docker tag",
},
ValidArgsFunction: completion.ImageNames(dockerCli),
ValidArgsFunction: completion.ImageNames(dockerCli, 2),
}

flags := cmd.Flags()
Expand Down
Loading