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'