mirror of
https://github.com/Cornelicorn/bullet-train.zsh.git
synced 2025-12-06 03:40:41 +01:00
Use kubectl to get k8s context and namespace (#312)
Add a way to get the current kubernetes context and default namespace in use using `kubectl`
This commit is contained in:
committed by
Caio Gondim
parent
cf54c3b9bd
commit
6a7b1ab36f
10
README.md
10
README.md
@@ -193,9 +193,15 @@ NOTE: You do not need to specify *end* segment - it will be added automatically.
|
|||||||
|`BULLETTRAIN_KCTX_BG`|`yellow`|Background color
|
|`BULLETTRAIN_KCTX_BG`|`yellow`|Background color
|
||||||
|`BULLETTRAIN_KCTX_FG`|`white`|Foreground color
|
|`BULLETTRAIN_KCTX_FG`|`white`|Foreground color
|
||||||
|`BULLETTRAIN_KCTX_PREFIX`|`⎈`|[Kubernetes](https://unicode-table.com/de/2388/) prefix of the segment
|
|`BULLETTRAIN_KCTX_PREFIX`|`⎈`|[Kubernetes](https://unicode-table.com/de/2388/) prefix of the segment
|
||||||
|`BULLETTRAIN_KCTX_KCONFIG`|`<MUST_BE_SET>`|Location of kube config file (e.g. /Users/Hugo/.kube/config)
|
|`BULLETTRAIN_KCTX_KUBECTL`|`true`|If `false` disable `kubectl` usage
|
||||||
|
|`BULLETTRAIN_KCTX_NAMESPACE`|`true`|If `false` will not show the default namespace. Namespace is only visible if `kubectl` is installed
|
||||||
|
|`BULLETTRAIN_KCTX_KCONFIG`|`${HOME}/.kube/config`|Location of kube config file (e.g. /Users/Hugo/.kube/config)
|
||||||
|
|
||||||
|
The prompt will first check if `BULLETTRAIN_KCTX_KUBECTL=true` and `kubectl` is installed than it will use `kubectl config view --minify` to determine the context and default namespace in use.
|
||||||
|
If `BULLETTRAIN_KCTX_KUBECTL=false` or `kubectl` is not installed, `BULLETTRAIN_KCTX_KCONFIG` will be parsed to get the current context.
|
||||||
|
|
||||||
|
The usage of `kubectl` allow the prompt to get the default namespace even if you are using multiple kube config files (e.g. KUBECONFIG=~/.kube/config:path-to-config1:path-to-config2)
|
||||||
|
|
||||||
`BULLETTRAIN_KCTX_KCONFIG` must be set, e.g. in .zshrc. There can be no default value and `~/` can not be reliably interpreted. The prompt will also do a sanity check whether `kubectl` is installed. If either condition fails, the prompt segment will not be drawn at all.
|
|
||||||
|
|
||||||
### AWS Profile
|
### AWS Profile
|
||||||
|
|
||||||
|
|||||||
@@ -161,6 +161,15 @@ fi
|
|||||||
if [ ! -n "${BULLETTRAIN_KCTX_PREFIX+1}" ]; then
|
if [ ! -n "${BULLETTRAIN_KCTX_PREFIX+1}" ]; then
|
||||||
BULLETTRAIN_KCTX_PREFIX="⎈"
|
BULLETTRAIN_KCTX_PREFIX="⎈"
|
||||||
fi
|
fi
|
||||||
|
if [ ! -n "${BULLETTRAIN_KCTX_KCONFIG+1}" ]; then
|
||||||
|
BULLETTRAIN_KCTX_KCONFIG="${HOME}/.kube/config"
|
||||||
|
fi
|
||||||
|
if [ ! -n "${BULLETTRAIN_KCTX_KUBECTL+1}" ]; then
|
||||||
|
BULLETTRAIN_KCTX_KUBECTL="true"
|
||||||
|
fi
|
||||||
|
if [ ! -n "${BULLETTRAIN_KCTX_NAMESPACE+1}" ]; then
|
||||||
|
BULLETTRAIN_KCTX_NAMESPACE="true"
|
||||||
|
fi
|
||||||
|
|
||||||
# ELIXIR
|
# ELIXIR
|
||||||
if [ ! -n "${BULLETTRAIN_ELIXIR_BG+1}" ]; then
|
if [ ! -n "${BULLETTRAIN_ELIXIR_BG+1}" ]; then
|
||||||
@@ -552,14 +561,15 @@ prompt_rust() {
|
|||||||
|
|
||||||
# Kubernetes Context
|
# Kubernetes Context
|
||||||
prompt_kctx() {
|
prompt_kctx() {
|
||||||
if [[ ! -n $BULLETTRAIN_KCTX_KCONFIG ]]; then
|
if [[ "$BULLETTRAIN_KCTX_KUBECTL" == "true" ]] && command -v kubectl > /dev/null 2>&1; then
|
||||||
return
|
local jsonpath='{.current-context}'
|
||||||
|
if [[ "$BULLETTRAIN_KCTX_NAMESPACE" == "true" ]]; then
|
||||||
|
jsonpath="${jsonpath}{':'}{..namespace}"
|
||||||
fi
|
fi
|
||||||
if command -v kubectl > /dev/null 2>&1; then
|
prompt_segment $BULLETTRAIN_KCTX_BG $BULLETTRAIN_KCTX_FG $BULLETTRAIN_KCTX_PREFIX" $(kubectl config view --minify --output "jsonpath=${jsonpath}" 2>/dev/null)"
|
||||||
if [[ -f $BULLETTRAIN_KCTX_KCONFIG ]]; then
|
elif [[ -f $BULLETTRAIN_KCTX_KCONFIG ]]; then
|
||||||
prompt_segment $BULLETTRAIN_KCTX_BG $BULLETTRAIN_KCTX_FG $BULLETTRAIN_KCTX_PREFIX" $(cat $BULLETTRAIN_KCTX_KCONFIG | grep current-context | awk '{print $2}')"
|
prompt_segment $BULLETTRAIN_KCTX_BG $BULLETTRAIN_KCTX_FG $BULLETTRAIN_KCTX_PREFIX" $(cat $BULLETTRAIN_KCTX_KCONFIG | grep current-context | awk '{print $2}')"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Virtualenv: current working virtualenv
|
# Virtualenv: current working virtualenv
|
||||||
|
|||||||
Reference in New Issue
Block a user