From c96b47769287c8eb1c5955d2600f0c8112cf7c0f Mon Sep 17 00:00:00 2001 From: Stanislaw Szydlo Date: Sun, 28 May 2017 12:13:56 +0200 Subject: [PATCH] Add 'kubectx' plugin. --- lib/prompt_info_functions.zsh | 2 +- plugins/kubectx/README.md | 26 ++++++++++++++++++++++++++ plugins/kubectx/kubectx.plugin.zsh | 14 ++++++++++++++ plugins/kubectx/prod.png | Bin 0 -> 3834 bytes plugins/kubectx/stage.png | Bin 0 -> 3829 bytes 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 plugins/kubectx/README.md create mode 100644 plugins/kubectx/kubectx.plugin.zsh create mode 100644 plugins/kubectx/prod.png create mode 100644 plugins/kubectx/stage.png diff --git a/lib/prompt_info_functions.zsh b/lib/prompt_info_functions.zsh index 335c02a3..4979faab 100644 --- a/lib/prompt_info_functions.zsh +++ b/lib/prompt_info_functions.zsh @@ -12,7 +12,7 @@ # Real implementations will be used when the respective plugins are loaded function chruby_prompt_info hg_prompt_info pyenv_prompt_info \ rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \ - virtualenv_prompt_info { + virtualenv_prompt_info kubectx_prompt_info { return 1 } diff --git a/plugins/kubectx/README.md b/plugins/kubectx/README.md new file mode 100644 index 00000000..9a1df261 --- /dev/null +++ b/plugins/kubectx/README.md @@ -0,0 +1,26 @@ +# kubectx - show active kubectl context + +This plugins adds ```kubectx_prompt_info()``` function. It shows name of the +active kubectl context (```kubectl config current-context```). + +You can use it to customize prompt and know if You are on prod cluster ;) + +_Example_. Add to **.zshrc**: + +``` +RPS1='$(kubectx_prompt_info)' +``` + +### custom ctx names + +One can rename default context name for better readability. + +_Example_. Add to **.zshrc**: +``` +kubectx_mapping[minikube] = "mini" +kubectx_mapping[context_name_from_kubeconfig]="$emoji[wolf_face]" +kubectx_mapping[production_cluster]="%{$fg[yellow]%}prod!%{$reset_color%}" +``` + +![staging](stage.png) +![production](prod.png) diff --git a/plugins/kubectx/kubectx.plugin.zsh b/plugins/kubectx/kubectx.plugin.zsh new file mode 100644 index 00000000..56b7217f --- /dev/null +++ b/plugins/kubectx/kubectx.plugin.zsh @@ -0,0 +1,14 @@ +typeset -A kubectx_mapping + +function kubectx_prompt_info() { + if [ $commands[kubectl] ]; then + local current_ctx=`kubectl config current-context` + + #if associative array declared + if [[ -n $kubectx_mapping ]]; then + echo "${kubectx_mapping[$current_ctx]}" + else + echo $current_ctx + fi + fi +} diff --git a/plugins/kubectx/prod.png b/plugins/kubectx/prod.png new file mode 100644 index 0000000000000000000000000000000000000000..0c194a66d357e3089e26470e54bcd9cd1614aca0 GIT binary patch literal 3834 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 E10~p6Gynhq literal 0 HcmV?d00001 diff --git a/plugins/kubectx/stage.png b/plugins/kubectx/stage.png new file mode 100644 index 0000000000000000000000000000000000000000..ac15b392997ee141c324548c6924fe92a82f72f9 GIT binary patch literal 3829 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