summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-08-01 10:00:58 +0200
committerMarc Cornellà <marc@mcornella.com>2024-08-01 10:00:58 +0200
commit22bda7799b1e1500a701e1a55a189c77119e9e5f (patch)
tree07e0d66029c366035e23bbc25232cad742c82e85 /plugins
parent44ea99e7b9536a94da60397a2b0fc1a0c8457f96 (diff)
downloadzsh-22bda7799b1e1500a701e1a55a189c77119e9e5f.tar.gz
zsh-22bda7799b1e1500a701e1a55a189c77119e9e5f.tar.bz2
zsh-22bda7799b1e1500a701e1a55a189c77119e9e5f.zip
fix(kubectx): fix display of k8s contexts without double quotes (#12534)
BREAKING CHANGE: the `kubectx` plugin now properly displays contexts from the kubectx_mapping array, without using double quotes. Please refer to the plugin README to see how to use it properly. Closes #12534 Co-authored-by: Ken Kelly <ken@kenhkelly.us>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/kubectx/README.md48
-rw-r--r--plugins/kubectx/kubectx.plugin.zsh8
2 files changed, 44 insertions, 12 deletions
diff --git a/plugins/kubectx/README.md b/plugins/kubectx/README.md
index d924e745c..e3987b42f 100644
--- a/plugins/kubectx/README.md
+++ b/plugins/kubectx/README.md
@@ -1,25 +1,55 @@
# kubectx - show active kubectl context
-This plugins adds ```kubectx_prompt_info()``` function. It shows name of the
-active kubectl context (```kubectl config current-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**:
+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 ctx names
+### Custom context names
-One can rename default context name for better readability.
+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 to **.zshrc**:
+**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
```
-kubectx_mapping["minikube"]="mini"
-kubectx_mapping["context_name_from_kubeconfig"]="$emoji[wolf_face]"
-kubectx_mapping["production_cluster"]="%{$fg[yellow]%}prod!%{$reset_color%}"
+
+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)
diff --git a/plugins/kubectx/kubectx.plugin.zsh b/plugins/kubectx/kubectx.plugin.zsh
index a3210facc..f1ca990ad 100644
--- a/plugins/kubectx/kubectx.plugin.zsh
+++ b/plugins/kubectx/kubectx.plugin.zsh
@@ -7,7 +7,9 @@ function kubectx_prompt_info() {
[[ -n "$current_ctx" ]] || return
- # use value in associative array if it exists
- # otherwise fall back to the context name
- echo "${kubectx_mapping[\"$current_ctx\"]:-${current_ctx:gs/%/%%}}"
+ # 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/%/%%}}"
}