From d75b714d8acd93ef6cecd76b1d0b4ce11300f409 Mon Sep 17 00:00:00 2001
From: romkatv <roman.perepelitsa@gmail.com>
Date: Tue, 16 Jul 2019 23:03:49 +0200
Subject: add nodenv prompt; #121

---
 internal/p10k.zsh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

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() {
-- 
cgit v1.2.3


From 3bf893162065cabe604241daba0ba9781122af7d Mon Sep 17 00:00:00 2001
From: romkatv <roman.perepelitsa@gmail.com>
Date: Tue, 16 Jul 2019 23:16:44 +0200
Subject: bail out of *env prompts if the corresponding *env command doesn't
 exist

---
 internal/p10k.zsh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 348b4f30..7a21008b 100755
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -1556,6 +1556,7 @@ function _p9k_nodenv_global_version() {
 # https://github.com/nodenv/nodenv
 set_default POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW false
 prompt_nodenv() {
+  (( $+commands[nodenv] )) || return
   _P9K_RETVAL=$NODENV_VERSION
   if [[ -z $_P9K_RETVAL ]]; then
     [[ $NODENV_DIR == /* ]] && local dir=$NODENV_DIR || local dir="$PWD/$NODENV_DIR"
@@ -1643,6 +1644,7 @@ function _p9k_rbenv_global_version() {
 # https://github.com/rbenv/rbenv#choosing-the-ruby-version
 set_default POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW false
 prompt_rbenv() {
+  (( $+commands[rbenv] )) || return
   local v=$RBENV_VERSION
   if [[ -z $v ]]; then
     [[ $RBENV_DIR == /* ]] && local dir=$RBENV_DIR || local dir="$PWD/$RBENV_DIR"
@@ -2374,6 +2376,7 @@ function _p9k_pyenv_global_version() {
 # https://github.com/pyenv/pyenv#choosing-the-python-version
 set_default POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW false
 prompt_pyenv() {
+  (( $+commands[pyenv] )) || return
   local v=${(j.:.)${(@)${(s.:.)PYENV_VERSION}#python-}}
   if [[ -z $v ]]; then
     [[ $PYENV_DIR == /* ]] && local dir=$PYENV_DIR || local dir="$PWD/$PYENV_DIR"
-- 
cgit v1.2.3