8ed19ab54d6980da777ccea185658e213b26f533

Author
Shaun Tabone <shauntab@gmail.com>
Committer
Robby Russell <robby@planetargon.com>
Date

Message

Added MicroK8s plugin for ZSH (#8499)

* Added MicroK8s plugin for ZSH

* Added caching for kubectl and helm commands

* Added title in compadd and enhanced README

Diff

  1diff --git a/plugins/microk8s/README.md b/plugins/microk8s/README.md
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..2b4ea206f60e4c77eb98167be2622eeab023d6ce
  4--- /dev/null
  5+++ b/plugins/microk8s/README.md
  6@@ -0,0 +1,24 @@
  7+# MicroK8s plugin
  8+
  9+This plugin provides completion and useful aliases for [MicroK8s](https://microk8s.io/).
 10+
 11+To use it, add `microk8s` to the plugins array in your zshrc file.
 12+
 13+```zsh
 14+plugins=(... microk8s)
 15+```
 16+
 17+## Aliases
 18+
 19+| Alias | Command          | Description                                                                                              |
 20+|-------|------------------|----------------------------------------------------------------------------------------------------------|
 21+| mco   | microk8s.config  | Shows the Kubernetes config file.                                                                        |
 22+| mct   | microk8s.ctr     | Interact with containerd CLI.                                                                            |
 23+| mdi   | microk8s.disable | Disables an addon.                                                                                       |
 24+| me    | microk8s.enable  | Enables an addon.                                                                                        |
 25+| mh    | microk8s.helm    | Interact with Helm CLI.                                                                                  |
 26+| mis   | microk8s.istio   | Interact with Istio CLI.                                                                                 |
 27+| mk    | microk8s.kubectl | Interact with Kubernetes CLI.                                                                            |
 28+| msp   | microk8s.stop    | Stops all Kubernetes services.                                                                           |
 29+| mst   | microk8s.start   | Starts MicroK8s after it is being stopped.                                                               |
 30+| msts  | microk8s.status  | Provides an overview of the MicroK8s state (running / not running) as well as the set of enabled addons. |
 31diff --git a/plugins/microk8s/microk8s.plugin.zsh b/plugins/microk8s/microk8s.plugin.zsh
 32new file mode 100644
 33index 0000000000000000000000000000000000000000..048a9ab835bc8483c7fb4da5b0989e3d6237a078
 34--- /dev/null
 35+++ b/plugins/microk8s/microk8s.plugin.zsh
 36@@ -0,0 +1,82 @@
 37+# ---------------------------------------------------------- #
 38+# Aliases and Completions for MicroK8s (https://microk8s.io) #
 39+# Author: Shaun Tabone (https://github.com/xontab)           #
 40+# ---------------------------------------------------------- #
 41+
 42+# Helper function to cache and load completions
 43+_microk8s_cache_completion() {
 44+  local cache="${ZSH_CACHE_DIR}/microk8s_$(echo $1)_completion"
 45+  if [[ ! -f $cache ]]; then
 46+    $2 $cache
 47+  fi
 48+
 49+  [[ -f $cache ]] && source $cache
 50+}
 51+
 52+# ---------------------------------------------------------- #
 53+# microk8s.enable                                            #
 54+# ALIAS: me                                                  #
 55+# ---------------------------------------------------------- #
 56+_microk8s_enable_get_command_list() {
 57+  microk8s.enable --help | tail -n +7 | awk '{$1=$1;print}'
 58+}
 59+
 60+_microk8s_enable() {
 61+   compadd -X "MicroK8s Addons" $(_microk8s_enable_get_command_list)
 62+}
 63+
 64+compdef _microk8s_enable microk8s.enable
 65+alias me='microk8s.enable'
 66+
 67+# ---------------------------------------------------------- #
 68+# microk8s.disable                                           #
 69+# ALIAS: mdi                                                 #
 70+# ---------------------------------------------------------- #
 71+_microk8s_disable_get_command_list() {
 72+  microk8s.disable --help | tail -n +7 | awk '{$1=$1;print}'
 73+}
 74+
 75+_microk8s_disable() {
 76+  compadd -X "MicroK8s Addons" $(_microk8s_disable_get_command_list)
 77+}
 78+
 79+compdef _microk8s_disable microk8s.disable
 80+alias mdi='microk8s.disable'
 81+
 82+# ---------------------------------------------------------- #
 83+# microk8s.kubectl                                           #
 84+# ALIAS: mk                                                  #
 85+# ---------------------------------------------------------- #
 86+_microk8s_kubectl_completion() {
 87+  if [ $commands[microk8s.kubectl] ]; then
 88+    microk8s.kubectl 2>/dev/null >/dev/null && microk8s.kubectl completion zsh | sed 's/__start_kubectl kubectl/__start_kubectl microk8s.kubectl/g' >$1
 89+  fi
 90+}
 91+
 92+_microk8s_cache_completion 'kubectl' _microk8s_kubectl_completion
 93+
 94+alias mk='microk8s.kubectl'
 95+
 96+# ---------------------------------------------------------- #
 97+# microk8s.helm                                              #
 98+# ALIAS: mh                                                  #
 99+# ---------------------------------------------------------- #
100+_microk8s_helm_completion() {
101+  if [ $commands[microk8s.helm] ]; then
102+    microk8s.helm completion zsh | sed 's/__start_helm helm/__start_helm microk8s.helm/g' >$1
103+  fi
104+}
105+
106+_microk8s_cache_completion 'helm' _microk8s_helm_completion
107+
108+alias mh='microk8s.helm'
109+
110+# ---------------------------------------------------------- #
111+# Other Aliases                                              #
112+# ---------------------------------------------------------- #
113+alias mco='microk8s.config'
114+alias mct='microk8s.ctr'
115+alias mis='microk8s.istio'
116+alias mst='microk8s.start'
117+alias msts='microk8s.status'
118+alias msp='microk8s.stop'