mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-13 09:20:09 +00:00
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>
This commit is contained in:
parent
44ea99e7b9
commit
22bda7799b
2 changed files with 44 additions and 12 deletions
|
@ -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)
|
||||
|
|
|
@ -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/%/%%}}"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue