feat(nodenv): add plugin for nodenv (#9880)

Co-authored-by: Matthew Boston <matthew@matthewboston.com>
This commit is contained in:
Carlos Eduardo Monti 2023-02-27 20:22:39 +01:00 committed by GitHub
parent 16050ab80e
commit 21bdb18b2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 0 deletions

20
plugins/nodenv/README.md Normal file
View File

@ -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)'
```

View File

@ -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