blob: 7dd40300ef0887fb076d689f1460b81f127a64fc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#
# Kubernetes (kubectl)
#
# Kubernetes is an open-source system for deployment, scaling,
# and management of containerized applications.
# Link: https://kubernetes.io/
# ------------------------------------------------------------------------------
# Configuration
# ------------------------------------------------------------------------------
SPACESHIP_KUBECONTEXT_SHOW="${SPACESHIP_KUBECONTEXT_SHOW=true}"
SPACESHIP_KUBECONTEXT_PREFIX="${SPACESHIP_KUBECONTEXT_PREFIX=""}"
SPACESHIP_KUBECONTEXT_SUFFIX="${SPACESHIP_KUBECONTEXT_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
SPACESHIP_KUBECONTEXT_COLOR="${SPACESHIP_KUBECONTEXT_COLOR="cyan"}"
SPACESHIP_KUBECONTEXT_NAMESPACE_SHOW="${SPACESHIP_KUBECONTEXT_NAMESPACE_SHOW=true}"
SPACESHIP_KUBECONTEXT_COLOR_GROUPS=(${SPACESHIP_KUBECONTEXT_COLOR_GROUPS=})
# ------------------------------------------------------------------------------
# Section
# ------------------------------------------------------------------------------
# Show current context in kubectl
spaceship_kubectl_context() {
[[ $SPACESHIP_KUBECONTEXT_SHOW == false ]] && return
spaceship::exists kubectl || return
local kube_context=$(kubectl config current-context 2>/dev/null)
[[ -z $kube_context ]] && return
if [[ $SPACESHIP_KUBECONTEXT_NAMESPACE_SHOW == true ]]; then
local kube_namespace=$(kubectl config view --minify --output 'jsonpath={..namespace}' 2>/dev/null)
[[ -n $kube_namespace && "$kube_namespace" != "default" ]] && kube_context="$kube_context ($kube_namespace)"
fi
# Apply custom color to section if $kube_context matches a pattern defined in SPACESHIP_KUBECONTEXT_COLOR_GROUPS array.
# See Options.md for usage example.
local len=${#SPACESHIP_KUBECONTEXT_COLOR_GROUPS[@]}
local it_to=$((len / 2))
local 'section_color' 'i'
for ((i = 1; i <= $it_to; i++)); do
local idx=$(((i - 1) * 2))
local color="${SPACESHIP_KUBECONTEXT_COLOR_GROUPS[$idx + 1]}"
local pattern="${SPACESHIP_KUBECONTEXT_COLOR_GROUPS[$idx + 2]}"
if [[ "$kube_context" =~ "$pattern" ]]; then
section_color=$color
break
fi
done
[[ -z "$section_color" ]] && section_color=$SPACESHIP_KUBECONTEXT_COLOR
spaceship::section \
"$section_color" \
"$SPACESHIP_KUBECONTEXT_PREFIX" \
"${kube_context}" \
"$SPACESHIP_KUBECONTEXT_SUFFIX"
}
|