|
1 | 1 | # geometry_kube - show kubectl client version and current context/namespace.
|
| 2 | +geometry_kube_symbol() { |
| 3 | + ansi ${GEOMETRY_KUBE_COLOR:=blue} ${GEOMETRY_KUBE_SYMBOL:="⎈"} |
| 4 | +} |
2 | 5 |
|
3 |
| -geometry_kube() { |
4 |
| - (( $+commands[kubectl] )) || return |
5 |
| - ( ${GEOMETRY_KUBE_PIN:=false} ) || [[ -n "$KUBECONFIG" ]] || return |
6 |
| - : ${GEOMETRY_KUBE_SEPARATOR:="|"} |
| 6 | +geometry_kube_namespace() { |
| 7 | + local kube_namespace=$(kubectl config view --minify --output "jsonpath={..namespace}" 2> /dev/null) |
| 8 | + ansi ${GEOMETRY_KUBE_NAMESPACE_COLOR:=default} ${kube_namespace:=default} |
| 9 | +} |
7 | 10 |
|
8 |
| - # Variable declaration |
9 |
| - local -a geometry_kube |
10 |
| - local kube_symbol |
11 |
| - local kube_context |
12 |
| - local kube_namespace |
13 |
| - local kube_version |
| 11 | +geometry_kube_context() { |
| 12 | + local kube_context="$(kubectl config current-context 2> /dev/null)" |
| 13 | + ansi ${GEOMETRY_KUBE_CONTEXT_COLOR:=default} ${kube_context} |
| 14 | +} |
14 | 15 |
|
15 |
| - kube_symbol=$(ansi ${GEOMETRY_KUBE_COLOR:=blue} ${GEOMETRY_KUBE_SYMBOL:="⎈"}) |
| 16 | +geometry_kube_version() { |
| 17 | + [[ $(kubectl version --client --short) =~ 'Client Version: ([0-9a-zA-Z.]+)' ]] |
| 18 | + local kube_version=($match[1]) |
| 19 | + ansi ${GEOMETRY_KUBE_VERSION_COLOR:=default} ${kube_version:=default} |
| 20 | +} |
16 | 21 |
|
17 |
| - kube_context="$(kubectl config current-context 2> /dev/null)" |
18 |
| - kube_context=$(ansi ${GEOMETRY_KUBE_CONTEXT_COLOR:=default} ${kube_context}) |
| 22 | +geometry_kube() { |
| 23 | + (( $+commands[kubectl] )) || return |
19 | 24 |
|
20 |
| - kube_namespace=$(kubectl config view -o "jsonpath={.contexts[?(@.name==\"${kube_context}\")].context.namespace}" 2> /dev/null) |
21 |
| - kube_namespace=$(ansi ${GEOMETRY_KUBE_NAMESPACE_COLOR:=default} ${kube_namespace:=default}) |
| 25 | + ( ${GEOMETRY_KUBE_PIN:=true} ) || return |
22 | 26 |
|
23 |
| - if ( ${GEOMETRY_KUBE_VERSION:=true} ); then |
24 |
| - [[ $(kubectl version --client --short) =~ 'Client Version: ([0-9a-zA-Z.]+)' ]] |
25 |
| - kube_version=($match[1]) |
26 |
| - fi |
| 27 | + ( ${GEOMETRY_KUBE_PIN:=false} ) || [[ -n "$KUBECONFIG" ]] || [[ -n "$(kubectl config current-context 2> /dev/null)" ]] || return |
27 | 28 |
|
28 |
| - geometry_kube=($kube_symbol $kube_context $kube_namespace $kube_version) |
| 29 | + local geometry_kube_details && geometry_kube_details=( |
| 30 | + $(geometry_kube_symbol) |
| 31 | + $(geometry_kube_context) |
| 32 | + $(geometry_kube_namespace) |
| 33 | + $(geometry_kube_version) |
| 34 | + ) |
29 | 35 |
|
30 |
| - echo -n ${(pj.$GEOMETRY_KUBE_SEPARATOR.)geometry_kube} |
| 36 | + local separator=${GEOMETRY_KUBE_SEPARATOR:-"|"} |
| 37 | + echo -n ${(pj.$separator.)geometry_kube_details} |
31 | 38 | }
|
0 commit comments