1
0
Fork 0
mirror of https://github.com/romkatv/powerlevel10k.git synced 2024-11-12 08:10:07 +00:00

kubecontext: handle strings with spaces and ignore multi-line strings

This commit is contained in:
romkatv 2019-07-30 07:52:26 +02:00
parent 2318bda2c3
commit 05deaa802f

View file

@ -2896,10 +2896,10 @@ prompt_kubecontext() {
if ! _p9k_cache_get $0 "${key[@]}"; then if ! _p9k_cache_get $0 "${key[@]}"; then
local context cluster namespace local context cluster namespace
() { () {
local cfg && cfg=(${(f)"$(kubectl config view -o=yaml)"}) || return local cfg && cfg=(${(f)"$(kubectl config view -o=yaml 2>/dev/null)"}) || return
local ctx=(${(@M)cfg:#current-context:[[:space:]]*}) local ctx=(${(@M)cfg:#current-context: [^\"\'|>]*})
(( $#ctx == 1 )) || return (( $#ctx == 1 )) || return
context=${${ctx[1]}[(w)2]} # TODO: figure out how values with spaces look in yaml context=${ctx[1]#current-context: }
local -i pos=${cfg[(i)contexts:]} local -i pos=${cfg[(i)contexts:]}
(( pos <= $#cfg )) || return (( pos <= $#cfg )) || return
shift $pos cfg shift $pos cfg
@ -2908,11 +2908,13 @@ prompt_kubecontext() {
(( --pos )) (( --pos ))
for ((; pos > 0; --pos)); do for ((; pos > 0; --pos)); do
local line=$cfg[pos] local line=$cfg[pos]
case $line in if [[ $line == '- context:' ]]; then
'- context:') return;; return
' cluster:'*) cluster=${line[(w)2]};; elif [[ $line == (#b)' cluster: '([^\"\'\|\>]*) ]]; then
' namespace:'*) namespace=${line[(w)2]};; cluster=$match[1]
esac elif [[ $line == (#b)' namespace: '([^\"\'\|\>]*) ]]; then
namespace=$match[1]
fi
done done
} }
local text=$context local text=$context