8127e5838c24a7fbfaac5b9a02609e033cb3c5e2

Author
Marc Cornellà <marc@mcornella.com>
Committer
GitHub <noreply@github.com>
Date

Message

fix(kubectl): fix kubectl completion for `kj`, `kjx` and `ky` aliases (#12566)

Diff

 1diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh
 2index a96e409c61db3dd1a4e9b11ee011cd7a9cce89e6..ad78fedeb9f1c413a49265aec7449e86454f6ff5 100644
 3--- a/plugins/kubectl/kubectl.plugin.zsh
 4+++ b/plugins/kubectl/kubectl.plugin.zsh
 5@@ -180,11 +180,23 @@ alias kej='kubectl edit job'
 6 alias kdj='kubectl describe job'
 7 alias kdelj='kubectl delete job'
 8 
 9-function kj() { kubectl "$@" -o json | jq; }
10-function kjx() { kubectl "$@" -o json | fx; }
11-function ky() { kubectl "$@" -o yaml | yh; }
12-if (( ${+functions[compdef]} )); then
13-  compdef _kubectl kj
14-  compdef _kubectl kjx
15-  compdef _kubectl ky
16-fi
17+# Utility print functions (json / yaml)
18+function _build_kubectl_out_alias {
19+  setopt localoptions norcexpandparam
20+
21+  # alias function
22+  eval "function $1 { $2 }"
23+
24+  # completion function
25+  eval "function _$1 {
26+    words=(kubectl \"\${words[@]:1}\")
27+    _kubectl
28+  }"
29+
30+  compdef _$1 $1
31+}
32+
33+_build_kubectl_out_alias "kj"  'kubectl "$@" -o json | jq'
34+_build_kubectl_out_alias "kjx" 'kubectl "$@" -o json | fx'
35+_build_kubectl_out_alias "ky"  'kubectl "$@" -o yaml | yh'
36+unfunction _build_kubectl_out_alias