From f866452c41f777186a83b06e6e5432dc757c9a15 Mon Sep 17 00:00:00 2001 From: Douglas Thrift Date: Tue, 6 Aug 2024 16:51:01 -0700 Subject: [PATCH 1/2] Add powershell completion --- pkg/cmd/kind/completion/completion.go | 7 +++- .../kind/completion/powershell/powershell.go | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 pkg/cmd/kind/completion/powershell/powershell.go 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..b65b77998c --- /dev/null +++ b/pkg/cmd/kind/completion/powershell/powershell.go @@ -0,0 +1,38 @@ +/* +Copyright 2019 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 +} From 5ac481717bfef262f341282733726fac22530462 Mon Sep 17 00:00:00 2001 From: Douglas Thrift Date: Wed, 7 Aug 2024 10:25:30 -0700 Subject: [PATCH 2/2] Update copyright year in powershell.go --- pkg/cmd/kind/completion/powershell/powershell.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cmd/kind/completion/powershell/powershell.go b/pkg/cmd/kind/completion/powershell/powershell.go index b65b77998c..e5169d0d04 100644 --- a/pkg/cmd/kind/completion/powershell/powershell.go +++ b/pkg/cmd/kind/completion/powershell/powershell.go @@ -1,5 +1,5 @@ /* -Copyright 2019 The Kubernetes Authors. +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.