diff --git a/changelogs/unreleased/4914-jxun b/changelogs/unreleased/4914-jxun new file mode 100644 index 000000000..84db5b83f --- /dev/null +++ b/changelogs/unreleased/4914-jxun @@ -0,0 +1 @@ +Make velero completion zsh command output can be used by `source` command. \ No newline at end of file diff --git a/pkg/cmd/cli/completion/completion.go b/pkg/cmd/cli/completion/completion.go index 800804b98..ee1c28509 100644 --- a/pkg/cmd/cli/completion/completion.go +++ b/pkg/cmd/cli/completion/completion.go @@ -66,7 +66,15 @@ $ velero completion fish > ~/.config/fish/completions/velero.fish case "bash": cmd.Root().GenBashCompletion(os.Stdout) case "zsh": - cmd.Root().GenZshCompletion(os.Stdout) + // # fix #4912 + // cobra does not support zsh completion ouptput used by source command + // according to https://github.com/spf13/cobra/issues/1529 + // Need to append compdef manually to do that. + zshHead := "#compdef velero\ncompdef _velero velero\n" + out := os.Stdout + out.Write([]byte(zshHead)) + + cmd.Root().GenZshCompletion(out) case "fish": cmd.Root().GenFishCompletion(os.Stdout, true) default: