summaryrefslogtreecommitdiff
path: root/home/.oh-my-zsh/plugins/kubectx
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
committernavewindre <boneyaard@gmail.com>2025-07-13 06:42:05 +0200
commit02f14a9cb152561a5e44062aac79f3b700403b40 (patch)
tree2db8ebda3b7f6f8777783aeb5c60018e6e1359d8 /home/.oh-my-zsh/plugins/kubectx
parentcbbdeb2f6b40a102a829f0c47cff052937231f00 (diff)
omz
Diffstat (limited to 'home/.oh-my-zsh/plugins/kubectx')
-rw-r--r--home/.oh-my-zsh/plugins/kubectx/README.md56
-rw-r--r--home/.oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh15
-rw-r--r--home/.oh-my-zsh/plugins/kubectx/prod.pngbin0 -> 3834 bytes
-rw-r--r--home/.oh-my-zsh/plugins/kubectx/stage.pngbin0 -> 3829 bytes
4 files changed, 71 insertions, 0 deletions
diff --git a/home/.oh-my-zsh/plugins/kubectx/README.md b/home/.oh-my-zsh/plugins/kubectx/README.md
new file mode 100644
index 0000000..e3987b4
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/kubectx/README.md
@@ -0,0 +1,56 @@
+# 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 ;)
+
+To use this plugin, add `kubectx` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... kubectx)
+```
+
+### Usage
+
+Add to **.zshrc**:
+
+```zsh
+# right prompt
+RPS1='$(kubectx_prompt_info)'
+# left prompt
+PROMPT="$PROMPT"'$(kubectx_prompt_info)'
+```
+
+### Custom context names
+
+You can rename the default context name for better readability or additional formatting.
+These values accept [prompt expansion sequences](http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html)
+such as `%F{color}`, `%f`, `%K{color}`, `%k`, `%B`, `%b`, `%U`, `%u`, `%S`, `%s`, `%{...%}`.
+
+**Example**: add this to your .zshrc file:
+
+```zsh
+kubectx_mapping[minikube]="mini"
+kubectx_mapping[context_name_from_kubeconfig]="$emoji[wolf_face]"
+kubectx_mapping[production_cluster]="%{$fg[yellow]%}prod!%{$reset_color%}"
+# contexts with spaces
+kubectx_mapping[context\ with\ spaces]="%F{red}spaces%f"
+# don't use quotes as it will break the prompt
+kubectx_mapping["context with spaces"]="%F{red}spaces%f" # ti
+```
+
+You can also define the whole mapping array at once:
+
+```zsh
+typeset -A kubectx_mapping
+kubectx_mapping=(
+ minikube "mini"
+ context_name_from_kubeconfig "$emoji[wolf_face]"
+ production_cluster "%{$fg[yellow]%}prod!%{$reset_color%}"
+ "context with spaces" "%F{red}spaces%f"
+)
+```
+
+![staging](stage.png)
+![production](prod.png)
diff --git a/home/.oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh b/home/.oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh
new file mode 100644
index 0000000..f1ca990
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/kubectx/kubectx.plugin.zsh
@@ -0,0 +1,15 @@
+typeset -g -A kubectx_mapping
+
+function kubectx_prompt_info() {
+ (( $+commands[kubectl] )) || return
+
+ local current_ctx=$(kubectl config current-context 2> /dev/null)
+
+ [[ -n "$current_ctx" ]] || return
+
+ # Use value in associative array if it exists, otherwise fall back to the context name
+ #
+ # Note: we need to escape the % character in the prompt string when coming directly from
+ # the context name, as it could contain a % character.
+ echo "${kubectx_mapping[$current_ctx]:-${current_ctx:gs/%/%%}}"
+}
diff --git a/home/.oh-my-zsh/plugins/kubectx/prod.png b/home/.oh-my-zsh/plugins/kubectx/prod.png
new file mode 100644
index 0000000..0c194a6
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/kubectx/prod.png
Binary files differ
diff --git a/home/.oh-my-zsh/plugins/kubectx/stage.png b/home/.oh-my-zsh/plugins/kubectx/stage.png
new file mode 100644
index 0000000..ac15b39
--- /dev/null
+++ b/home/.oh-my-zsh/plugins/kubectx/stage.png
Binary files differ