Browse Source

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

Marc Cornellà 9 months ago
parent
commit
8127e5838c
1 changed files with 20 additions and 8 deletions
  1. 20 8
      plugins/kubectl/kubectl.plugin.zsh

+ 20 - 8
plugins/kubectl/kubectl.plugin.zsh

@@ -180,11 +180,23 @@ alias kej='kubectl edit job'
 alias kdj='kubectl describe job'
 alias kdj='kubectl describe job'
 alias kdelj='kubectl delete job'
 alias kdelj='kubectl delete job'
 
 
-function kj() { kubectl "$@" -o json | jq; }
-function kjx() { kubectl "$@" -o json | fx; }
-function ky() { kubectl "$@" -o yaml | yh; }
-if (( ${+functions[compdef]} )); then
-  compdef _kubectl kj
-  compdef _kubectl kjx
-  compdef _kubectl ky
-fi
+# Utility print functions (json / yaml)
+function _build_kubectl_out_alias {
+  setopt localoptions norcexpandparam
+
+  # alias function
+  eval "function $1 { $2 }"
+
+  # completion function
+  eval "function _$1 {
+    words=(kubectl \"\${words[@]:1}\")
+    _kubectl
+  }"
+
+  compdef _$1 $1
+}
+
+_build_kubectl_out_alias "kj"  'kubectl "$@" -o json | jq'
+_build_kubectl_out_alias "kjx" 'kubectl "$@" -o json | fx'
+_build_kubectl_out_alias "ky"  'kubectl "$@" -o yaml | yh'
+unfunction _build_kubectl_out_alias