Skip to content

Commit fb65665

Browse files
committed
Improve startup time drasticaly by caching to disk
1 parent 486404e commit fb65665

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

kube-ps1.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ KUBE_PS1_DISABLE_PATH="${HOME}/.kube/kube-ps1/disabled"
4141
KUBE_PS1_LAST_TIME=0
4242
KUBE_PS1_CLUSTER_FUNCTION="${KUBE_PS1_CLUSTER_FUNCTION}"
4343
KUBE_PS1_NAMESPACE_FUNCTION="${KUBE_PS1_NAMESPACE_FUNCTION}"
44+
KUBE_PS1_ENV_CACHEFILE="${HOME}/.kube-ps1.envs"
4445

4546
# Determine our shell
4647
if [ "${ZSH_VERSION-}" ]; then
@@ -63,6 +64,7 @@ _kube_ps1_init() {
6364
add-zsh-hook precmd _kube_ps1_update_cache
6465
zmodload -F zsh/stat b:zstat
6566
zmodload zsh/datetime
67+
_kube_load_vars_from_file
6668
;;
6769
"bash")
6870
_KUBE_PS1_OPEN_ESC=$'\001'
@@ -74,6 +76,20 @@ _kube_ps1_init() {
7476
esac
7577
}
7678

79+
_kube_load_vars_from_file() {
80+
if test -f "$KUBE_PS1_ENV_CACHEFILE"; then
81+
source "$KUBE_PS1_ENV_CACHEFILE"
82+
fi
83+
}
84+
85+
_kube_ps1_update_cachefile() {
86+
# Cache has been updated, write to file.
87+
echo "KUBE_PS1_CONTEXT=$KUBE_PS1_CONTEXT" > $KUBE_PS1_ENV_CACHEFILE
88+
echo "KUBE_PS1_KUBECONFIG_CACHE=$KUBE_PS1_KUBECONFIG_CACHE" >> $KUBE_PS1_ENV_CACHEFILE
89+
echo "KUBE_PS1_LAST_TIME=$KUBE_PS1_LAST_TIME" >> $KUBE_PS1_ENV_CACHEFILE
90+
echo "KUBE_PS1_NAMESPACE=$KUBE_PS1_NAMESPACE" >> $KUBE_PS1_ENV_CACHEFILE
91+
}
92+
7793
_kube_ps1_color_fg() {
7894
local KUBE_PS1_FG_CODE
7995
case "${1}" in
@@ -212,6 +228,7 @@ _kube_ps1_update_cache() {
212228
# User changed KUBECONFIG; unconditionally refetch.
213229
KUBE_PS1_KUBECONFIG_CACHE=${KUBECONFIG}
214230
_kube_ps1_get_context_ns
231+
_kube_ps1_update_cachefile
215232
return
216233
fi
217234

@@ -222,6 +239,7 @@ _kube_ps1_update_cache() {
222239
[[ -r "${conf}" ]] || continue
223240
if _kube_ps1_file_newer_than "${conf}" "${KUBE_PS1_LAST_TIME}"; then
224241
_kube_ps1_get_context_ns
242+
_kube_ps1_update_cachefile
225243
return
226244
fi
227245
done

0 commit comments

Comments
 (0)