summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-07-21 10:16:30 +0200
committerGitHub <noreply@github.com>2024-07-21 10:16:30 +0200
commit8127e5838c24a7fbfaac5b9a02609e033cb3c5e2 (patch)
tree315a4c62a1224d6de27b19a233e61256eb7f65ec
parentb1e3a82bb5a2545b495c667f8bf838c3e6033ce4 (diff)
downloadzsh-8127e5838c24a7fbfaac5b9a02609e033cb3c5e2.tar.gz
zsh-8127e5838c24a7fbfaac5b9a02609e033cb3c5e2.tar.bz2
zsh-8127e5838c24a7fbfaac5b9a02609e033cb3c5e2.zip
fix(kubectl): fix kubectl completion for `kj`, `kjx` and `ky` aliases (#12566)
-rw-r--r--plugins/kubectl/kubectl.plugin.zsh28
1 files changed, 20 insertions, 8 deletions
diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh
index a96e409c6..ad78fedeb 100644
--- a/plugins/kubectl/kubectl.plugin.zsh
+++ b/plugins/kubectl/kubectl.plugin.zsh
@@ -180,11 +180,23 @@ alias kej='kubectl edit job'
alias kdj='kubectl describe 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