summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Eduardo Monti <slaytanic@gmail.com>2023-02-27 20:22:39 +0100
committerGitHub <noreply@github.com>2023-02-27 20:22:39 +0100
commit21bdb18b2d1fe8b547a42da7ac7b58fb28563a2c (patch)
treecadbf38f6aff3450b36e41f14ab4a9e9cdadd31a
parent16050ab80e63f8e53c07777b4c2ae16ad085e5ad (diff)
downloadzsh-21bdb18b2d1fe8b547a42da7ac7b58fb28563a2c.tar.gz
zsh-21bdb18b2d1fe8b547a42da7ac7b58fb28563a2c.tar.bz2
zsh-21bdb18b2d1fe8b547a42da7ac7b58fb28563a2c.zip
feat(nodenv): add plugin for `nodenv` (#9880)
Co-authored-by: Matthew Boston <matthew@matthewboston.com>
-rw-r--r--plugins/nodenv/README.md20
-rw-r--r--plugins/nodenv/nodenv.plugin.zsh43
2 files changed, 63 insertions, 0 deletions
diff --git a/plugins/nodenv/README.md b/plugins/nodenv/README.md
new file mode 100644
index 000000000..550597025
--- /dev/null
+++ b/plugins/nodenv/README.md
@@ -0,0 +1,20 @@
+# nodenv plugin
+
+The primary job of this plugin is to provide `nodenv_prompt_info` which can be added to your theme to include Node
+version information into your prompt.
+
+To use it, add `nodenv` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... nodenv)
+```
+
+## Functions
+
+* `nodenv_prompt_info`: displays the Node version in use by nodenv; or the global Node
+ version, if nodenv wasn't found. You can use this function in your prompt by adding
+ `$(nodenv_prompt_info)` to PROMPT or RPROMPT:
+
+ ```zsh
+ RPROMPT='$(nodenv_prompt_info)'
+ ```
diff --git a/plugins/nodenv/nodenv.plugin.zsh b/plugins/nodenv/nodenv.plugin.zsh
new file mode 100644
index 000000000..79a4ffbb5
--- /dev/null
+++ b/plugins/nodenv/nodenv.plugin.zsh
@@ -0,0 +1,43 @@
+# This plugin loads nodenv into the current shell and provides prompt info via
+# the 'nodenv_prompt_info' function.
+
+FOUND_NODENV=${+commands[nodenv]}
+
+if [[ $FOUND_NODENV -ne 1 ]]; then
+ nodenvdirs=(
+ "$HOME/.nodenv"
+ "/usr/local/nodenv"
+ "/opt/nodenv"
+ "/usr/local/opt/nodenv"
+ )
+ for dir in $nodenvdirs; do
+ if [[ -d "${dir}/bin" ]]; then
+ export PATH="$PATH:${dir}/bin"
+ FOUND_NODENV=1
+ break
+ fi
+ done
+
+ if [[ $FOUND_NODENV -ne 1 ]]; then
+ if (( $+commands[brew] )) && dir=$(brew --prefix nodenv 2>/dev/null); then
+ if [[ -d "${dir}/bin" ]]; then
+ export PATH="$PATH:${dir}/bin"
+ FOUND_NODENV=1
+ fi
+ fi
+ fi
+fi
+
+if [[ $FOUND_NODENV -eq 1 ]]; then
+ eval "$(nodenv init --no-rehash - zsh)"
+ function nodenv_prompt_info() {
+ nodenv version-name 2>/dev/null
+ }
+else
+ # fallback to system node
+ function nodenv_prompt_info() {
+ echo "system: $(node -v 2>&1 | cut -c 2-)"
+ }
+fi
+
+unset FOUND_NODENV nodenvdirs dir