From 483447082b04c3e4830f52a69b23f5a696bf4da5 Mon Sep 17 00:00:00 2001
From: Jamie Rolfs <jamie.rolfs@gmail.com>
Date: Thu, 16 Mar 2017 03:12:18 -0700
Subject: [PATCH] Add nodenv support to Node.js module

- Implementation from https://github.com/sorin-ionescu/prezto/pull/1001
- Documentation from https://github.com/sorin-ionescu/prezto/pull/1178
---
 modules/node/README.md           | 9 +++++++++
 modules/node/functions/node-info | 2 ++
 modules/node/init.zsh            | 8 ++++++++
 3 files changed, 19 insertions(+)

diff --git a/modules/node/README.md b/modules/node/README.md
index 5f0c3ca..66e9784 100644
--- a/modules/node/README.md
+++ b/modules/node/README.md
@@ -10,6 +10,13 @@ nvm
 [nvm][5] allows for managing multiple, isolated Node.js installations in the
 home directory.
 
+nodenv
+------
+
+[nodenv][6] does one thing well. nodenv is concerned solely with switching
+Node versions. It's simple and predictable, Just Works, and is rock solid in
+production. nodenv is forked from the popular [rbenv][7].
+
 Functions
 ---------
 
@@ -43,3 +50,5 @@ Authors
 [3]: http://nodejs.org/api
 [4]: https://github.com/sorin-ionescu/prezto/issues
 [5]: https://github.com/creationix/nvm
+[6]: https://github.com/nodenv/nodenv
+[7]: https://github.com/sstephenson/rbenv
diff --git a/modules/node/functions/node-info b/modules/node/functions/node-info
index 7742f90..e4cd52d 100644
--- a/modules/node/functions/node-info
+++ b/modules/node/functions/node-info
@@ -15,6 +15,8 @@ typeset -gA node_info
 
 if (( $+functions[nvm_version] )); then
   version="${$(nvm_version)#v}"
+elif (( $+commands[nodenv] )); then
+  version="${${$(nodenv version)#v}[(w)0]}"
 fi
 
 if [[ "$version" != (none|) ]]; then
diff --git a/modules/node/init.zsh b/modules/node/init.zsh
index 6d60078..2eb297c 100644
--- a/modules/node/init.zsh
+++ b/modules/node/init.zsh
@@ -14,6 +14,14 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
 elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then
   source $(brew --prefix nvm)/nvm.sh
 
+# Load manually installed nodenv into the shell session.
+elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then
+  eval "$($HOME/.nodenv/bin/nodenv init -)"
+
+# Load package manager installed nodenv into the shell session.
+elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nodenv 2>/dev/null)" ]]; then
+  eval "$($(brew --prefix nodenv)/bin/nodenv init -)"
+
 # Return if requirements are not found.
 elif (( ! $+commands[node] )); then
   return 1