Commit d36c1b8d authored by Pmoranga's avatar Pmoranga Committed by Marc Cornellà
Browse files

kube_ps1: customize colors and dynamically toggle prompt (#7269)

changes:
- easily customize the colors via variables
- command to switch on/off the custom prompt
- Improved documentation with example on how to append on the prompt.

Fixes #7261
parent 0c3499ec
...@@ -45,20 +45,37 @@ want to load. ...@@ -45,20 +45,37 @@ want to load.
vim $HOME/.zshrc vim $HOME/.zshrc
``` ```
Add kube-ps1 to the list of enabled plugins: Add kube-ps1 to the list of enabled plugins and enable it on the prompt:
```shell ```shell
plugins=( plugins=(
git git
kube-ps1 kube-ps1
) )
PROMPT=$PROMPT'$(kube_ps1) '
```
Note: the `PROMPT` example above was tested with the theme `robbyrussell`
## Enabling / Disabling on the current shell
Sometimes the kubernetes information can be anoying, you can easily
switch it on and off with the following commands:
```shell
kubeon
```
```shell
kubeoff
``` ```
## Colors ## Colors
Blue was used as the prefix to match the Kubernetes color as closely as Blue was used as the prefix to match the Kubernetes color as closely as
possible. Red was chosen as the cluster name to stand out, and cyan possible. Red was chosen as the cluster name to stand out, and cyan
for the namespace. These can of course be changed. for the namespace. Check the customization section for changing them.
## Customization ## Customization
...@@ -75,7 +92,12 @@ The default settings can be overridden in ~/.zshrc ...@@ -75,7 +92,12 @@ The default settings can be overridden in ~/.zshrc
| `KUBE_PS1_SEPERATOR` | `\|` | Separator between symbol and cluster name | | `KUBE_PS1_SEPERATOR` | `\|` | Separator between symbol and cluster name |
| `KUBE_PS1_DIVIDER` | `:` | Separator between cluster and namespace | | `KUBE_PS1_DIVIDER` | `:` | Separator between cluster and namespace |
| `KUBE_PS1_SUFFIX` | `)` | Prompt closing character | | `KUBE_PS1_SUFFIX` | `)` | Prompt closing character |
| `KUBE_PS1_COLOR_SYMBOL` | `"%F{blue}"` | Custom color for the symbol |
| `KUBE_PS1_COLOR_CONTEXT` | `"%F{red}"` | Custom color for the context |
| `KUBE_PS1_COLOR_NS` | `"%F{cyan}"` | Custom color for the namespace |
| `KUBE_PS1_ENABLED` | `true` | Set to false to start disabled on any new shell, `kubeon`/`kubeoff` will flip this value on the current shell |
## Contributors ## Contributors
Jared Yanovich - Jared Yanovich
- Pedro Moranga
\ No newline at end of file
...@@ -39,6 +39,11 @@ KUBE_PS1_DIVIDER="${KUBE_PS1_DIVIDER-:}" ...@@ -39,6 +39,11 @@ KUBE_PS1_DIVIDER="${KUBE_PS1_DIVIDER-:}"
KUBE_PS1_PREFIX="${KUBE_PS1_PREFIX-(}" KUBE_PS1_PREFIX="${KUBE_PS1_PREFIX-(}"
KUBE_PS1_SUFFIX="${KUBE_PS1_SUFFIX-)}" KUBE_PS1_SUFFIX="${KUBE_PS1_SUFFIX-)}"
KUBE_PS1_LAST_TIME=0 KUBE_PS1_LAST_TIME=0
KUBE_PS1_ENABLED=true
KUBE_PS1_COLOR_SYMBOL="%F{blue}"
KUBE_PS1_COLOR_CONTEXT="%F{red}"
KUBE_PS1_COLOR_NS="%F{cyan}"
_kube_ps1_binary_check() { _kube_ps1_binary_check() {
command -v "$1" >/dev/null command -v "$1" >/dev/null
...@@ -127,21 +132,28 @@ _kube_ps1_get_context_ns() { ...@@ -127,21 +132,28 @@ _kube_ps1_get_context_ns() {
fi fi
} }
# function to disable the prompt on the current shell
kubeon(){
KUBE_PS1_ENABLED=true
}
# function to disable the prompt on the current shell
kubeoff(){
KUBE_PS1_ENABLED=false
}
# Build our prompt # Build our prompt
kube_ps1 () { kube_ps1 () {
local reset_color="%f" local reset_color="%{$reset_color%}"
local blue="%F{blue}" [[ ${KUBE_PS1_ENABLED} != 'true' ]] && return
local red="%F{red}"
local cyan="%F{cyan}"
KUBE_PS1="${reset_color}$KUBE_PS1_PREFIX" KUBE_PS1="${reset_color}$KUBE_PS1_PREFIX"
KUBE_PS1+="${blue}$(_kube_ps1_symbol)" KUBE_PS1+="${KUBE_PS1_COLOR_SYMBOL}$(_kube_ps1_symbol)"
KUBE_PS1+="${reset_color}$KUBE_PS1_SEPERATOR" KUBE_PS1+="${reset_color}$KUBE_PS1_SEPERATOR"
KUBE_PS1+="${red}$KUBE_PS1_CONTEXT${reset_color}" KUBE_PS1+="${KUBE_PS1_COLOR_CONTEXT}$KUBE_PS1_CONTEXT${reset_color}"
KUBE_PS1+="$KUBE_PS1_DIVIDER" KUBE_PS1+="$KUBE_PS1_DIVIDER"
KUBE_PS1+="${cyan}$KUBE_PS1_NAMESPACE${reset_color}" KUBE_PS1+="${KUBE_PS1_COLOR_NS}$KUBE_PS1_NAMESPACE${reset_color}"
KUBE_PS1+="$KUBE_PS1_SUFFIX" KUBE_PS1+="$KUBE_PS1_SUFFIX"
echo "${KUBE_PS1}" echo "${KUBE_PS1}"
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment