aboutsummaryrefslogtreecommitdiff
path: root/internal/p10k.zsh
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-07-17 00:03:49 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-07-17 00:03:49 +0300
commitd75b714d8acd93ef6cecd76b1d0b4ce11300f409 (patch)
treee519c2001bd27ecc7e8a89d461cb9246babb33f0 /internal/p10k.zsh
parent38da6a3c9b9dbdd3c93fce2c543f2cf4939193ea (diff)
add nodenv prompt; #121
Diffstat (limited to 'internal/p10k.zsh')
-rwxr-xr-xinternal/p10k.zsh51
1 files changed, 51 insertions, 0 deletions
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index c7cc6c4d..348b4f30 100755
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -1530,6 +1530,57 @@ prompt_nodeenv() {
fi
}
+function _p9k_read_nodenv_version_file() {
+ [[ -r $1 ]] || return
+ local rest
+ read _P9K_RETVAL rest <$1 2>/dev/null
+ [[ -n $_P9K_RETVAL ]]
+}
+
+function _p9k_nodeenv_version_transform() {
+ local dir=${NODENV_ROOT:-$HOME/.nodenv}/versions
+ [[ -z $1 || $1 == system ]] && _P9K_RETVAL=$1 && return
+ [[ -d $dir/$1 ]] && _P9K_RETVAL=$1 && return
+ [[ -d $dir/${1/v} ]] && _P9K_RETVAL=${1/v} && return
+ [[ -d $dir/${1#node-} ]] && _P9K_RETVAL=${1#node-} && return
+ [[ -d $dir/${1#node-v} ]] && _P9K_RETVAL=${1#node-v} && return
+ return 1
+}
+
+function _p9k_nodenv_global_version() {
+ _p9k_read_nodenv_version_file ${NODENV_ROOT:-$HOME/.nodenv}/version || _P9K_RETVAL=system
+}
+
+################################################################
+# Segment to display nodenv information
+# https://github.com/nodenv/nodenv
+set_default POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW false
+prompt_nodenv() {
+ _P9K_RETVAL=$NODENV_VERSION
+ if [[ -z $_P9K_RETVAL ]]; then
+ [[ $NODENV_DIR == /* ]] && local dir=$NODENV_DIR || local dir="$PWD/$NODENV_DIR"
+ while [[ $dir != //[^/]# ]]; do
+ _p9k_read_nodenv_version_file $dir/.node-version && break
+ [[ $dir == / ]] && break
+ dir=${dir:h}
+ done
+ if [[ -z $_P9K_RETVAL ]]; then
+ [[ $POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW == true ]] || return
+ _p9k_nodenv_global_version
+ fi
+ fi
+
+ _p9k_nodeenv_version_transform $_P9K_RETVAL || return
+ local v=$_P9K_RETVAL
+
+ if [[ $POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW == false ]]; then
+ _p9k_nodenv_global_version
+ _p9k_nodeenv_version_transform $_P9K_RETVAL && [[ $v == $_P9K_RETVAL ]] && return
+ fi
+
+ "$1_prompt_segment" "$0" "$2" "black" "green" 'NODE_ICON' 0 '' "${v//\%/%%}"
+}
+
################################################################
# Segment to print a little OS icon
prompt_os_icon() {