diff --git a/pkg/cmd/kind/completion/completion.go b/pkg/cmd/kind/completion/completion.go index d588d3b45d..788a3cb227 100644 --- a/pkg/cmd/kind/completion/completion.go +++ b/pkg/cmd/kind/completion/completion.go @@ -25,6 +25,7 @@ import ( "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/completion/bash" "sigs.k8s.io/kind/pkg/cmd/kind/completion/fish" + "sigs.k8s.io/kind/pkg/cmd/kind/completion/powershell" "sigs.k8s.io/kind/pkg/cmd/kind/completion/zsh" "sigs.k8s.io/kind/pkg/log" ) @@ -47,11 +48,12 @@ func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd.AddCommand(zsh.NewCommand(logger, streams)) cmd.AddCommand(bash.NewCommand(logger, streams)) cmd.AddCommand(fish.NewCommand(logger, streams)) + cmd.AddCommand(powershell.NewCommand(logger, streams)) return cmd } const longDescription = ` -Outputs kind shell completion for the given shell (bash or zsh) +Outputs kind shell completion for the given shell (bash, fish, powershell, or zsh) This depends on the bash-completion binary. Example installation instructions: # for bash users $ kind completion bash > ~/.kind-completion @@ -69,6 +71,9 @@ This depends on the bash-completion binary. Example installation instructions: # for fish users % kind completion fish > ~/.config/fish/completions/kind.fish +# for powershell users + PS> kind completion powershell | Out-String | Invoke-Expression + Additionally, you may want to output the completion to a file and source in your .bashrc Note for zsh users: [1] zsh completions are only supported in versions of zsh >= 5.2 ` diff --git a/pkg/cmd/kind/completion/powershell/powershell.go b/pkg/cmd/kind/completion/powershell/powershell.go new file mode 100644 index 0000000000..e5169d0d04 --- /dev/null +++ b/pkg/cmd/kind/completion/powershell/powershell.go @@ -0,0 +1,38 @@ +/* +Copyright 2024 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package powershell implements the `powershell` command +package powershell + +import ( + "github.com/spf13/cobra" + + "sigs.k8s.io/kind/pkg/cmd" + "sigs.k8s.io/kind/pkg/log" +) + +// NewCommand returns a new cobra.Command for cluster creation +func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { + cmd := &cobra.Command{ + Args: cobra.NoArgs, + Use: "powershell", + Short: "Output shell completions for powershell", + RunE: func(cmd *cobra.Command, args []string) error { + return cmd.Parent().Parent().GenPowerShellCompletion(streams.Out) + }, + } + return cmd +}