5152d381bb828a4ed41fdbb430eb05970a8bb25c

Author
Stanisław Szydło <st4nson@gmail.com>
Committer
GitHub <noreply@github.com>
Date

Message

feat(kubectx): adding a new plugin for 'kubectx' (#6114)

Co-authored-by: Marc Cornellà <marc.cornella@live.com>
Co-authored-by: Robby Russell <robby@planetargon.com>

Diff

 1diff --git a/lib/prompt_info_functions.zsh b/lib/prompt_info_functions.zsh
 2index 48f033da6427f424a0077a2eed948b7da95d99ed..e29fb27a5bd45cebbeca44b5b8b4697b741e49c4 100644
 3--- a/lib/prompt_info_functions.zsh
 4+++ b/lib/prompt_info_functions.zsh
 5@@ -19,6 +19,7 @@ function chruby_prompt_info \
 6   virtualenv_prompt_info \
 7   jenv_prompt_info \
 8   tf_prompt_info \
 9+  kubectx_prompt_info \
10 {
11   return 1
12 }
13diff --git a/plugins/kubectx/README.md b/plugins/kubectx/README.md
14new file mode 100644
15index 0000000000000000000000000000000000000000..9a1df26174c313974cd090324eab3f326d245341
16--- /dev/null
17+++ b/plugins/kubectx/README.md
18@@ -0,0 +1,26 @@
19+# kubectx - show active kubectl context
20+
21+This plugins adds ```kubectx_prompt_info()``` function. It shows name of the
22+active kubectl context (```kubectl config current-context```).
23+
24+You can use it to customize prompt and know if You are on prod cluster ;)
25+
26+_Example_. Add to **.zshrc**:
27+
28+```
29+RPS1='$(kubectx_prompt_info)'
30+```
31+
32+### custom ctx names
33+
34+One can rename default context name for better readability.
35+
36+_Example_. Add to **.zshrc**:
37+```
38+kubectx_mapping[minikube] = "mini"
39+kubectx_mapping[context_name_from_kubeconfig]="$emoji[wolf_face]"
40+kubectx_mapping[production_cluster]="%{$fg[yellow]%}prod!%{$reset_color%}"
41+```
42+
43+![staging](stage.png)
44+![production](prod.png)
45diff --git a/plugins/kubectx/kubectx.plugin.zsh b/plugins/kubectx/kubectx.plugin.zsh
46new file mode 100644
47index 0000000000000000000000000000000000000000..56b7217f1bc26d3fd1bbfdd153425ffd35d93039
48--- /dev/null
49+++ b/plugins/kubectx/kubectx.plugin.zsh
50@@ -0,0 +1,14 @@
51+typeset -A kubectx_mapping
52+
53+function kubectx_prompt_info() {
54+  if [ $commands[kubectl] ]; then
55+    local current_ctx=`kubectl config current-context`
56+
57+    #if associative array declared
58+    if [[ -n $kubectx_mapping ]]; then
59+      echo "${kubectx_mapping[$current_ctx]}"
60+    else
61+      echo $current_ctx
62+    fi
63+  fi
64+}
65diff --git a/plugins/kubectx/prod.png b/plugins/kubectx/prod.png
66new file mode 100644
67index 0000000000000000000000000000000000000000..0c194a66d357e3089e26470e54bcd9cd1614aca0
68Binary files /dev/null and b/plugins/kubectx/prod.png differ
69diff --git a/plugins/kubectx/stage.png b/plugins/kubectx/stage.png
70new file mode 100644
71index 0000000000000000000000000000000000000000..ac15b392997ee141c324548c6924fe92a82f72f9
72Binary files /dev/null and b/plugins/kubectx/stage.png differ