2019-04-27 09:38:14 +02:00
# See https://github.com/nvm-sh/nvm#installation-and-update
if [ [ -z " $NVM_DIR " ] ] ; then
if [ [ -d " $HOME /.nvm " ] ] ; then
export NVM_DIR = " $HOME /.nvm "
elif [ [ -d " ${ XDG_CONFIG_HOME :- $HOME /.config } /nvm " ] ] ; then
export NVM_DIR = " ${ XDG_CONFIG_HOME :- $HOME /.config } /nvm "
2022-10-06 21:01:56 +02:00
elif ( ( $+commands[ brew] ) ) ; then
NVM_HOMEBREW = " ${ NVM_HOMEBREW :- ${ HOMEBREW_PREFIX :- $( brew --prefix) } /opt/nvm } "
if [ [ -d " $NVM_HOMEBREW " ] ] ; then
export NVM_DIR = " $NVM_HOMEBREW "
fi
2019-04-27 09:38:14 +02:00
fi
fi
2013-09-05 00:07:58 +02:00
2020-10-09 16:12:03 +02:00
# Don't try to load nvm if command already available
2022-04-24 18:58:36 +02:00
# Note: nvm is a function so we need to use `which`
2022-10-06 21:01:56 +02:00
which nvm & >/dev/null && return
2020-10-08 17:21:34 +02:00
2022-11-15 20:23:09 +01:00
# TODO: 2022-11-11: Remove soft-deprecate options
if ( ( ${ +NVM_LAZY } + ${ +NVM_LAZY_CMD } + ${ +NVM_AUTOLOAD } ) ) ; then
# Get list of NVM_* variable settings defined
local -a used_vars
used_vars = ( ${ (o)parameters[(I)NVM_(AUTOLOAD|LAZY|LAZY_CMD)] } )
# Nicely print the list in the style `var1, var2 and var3`
echo " ${ fg [yellow] } [nvm plugin] Variable-style settings are deprecated. Instead of ${ (j : , : )used_vars[1,-2] } ${ used_vars [-2]+ and } ${ used_vars [-1] } , use:\n "
if ( ( $+NVM_AUTOLOAD ) ) ; then
2022-12-01 19:44:48 +01:00
echo " zstyle ':omz:plugins:nvm' autoload yes"
2022-11-15 20:23:09 +01:00
zstyle ':omz:plugins:nvm' autoload yes
fi
if ( ( $+NVM_LAZY ) ) ; then
2022-12-01 19:44:48 +01:00
echo " zstyle ':omz:plugins:nvm' lazy yes"
2022-11-15 20:23:09 +01:00
zstyle ':omz:plugins:nvm' lazy yes
fi
if ( ( $+NVM_LAZY_CMD ) ) ; then
echo " zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD "
zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD
fi
echo " $reset_color "
unset used_vars NVM_AUTOLOAD NVM_LAZY NVM_LAZY_CMD
fi
if zstyle -t ':omz:plugins:nvm' lazy; then
# Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
eval "
2023-06-07 18:43:47 +02:00
function nvm node npm npx pnpm yarn $nvm_lazy_cmd {
unfunction nvm node npm npx pnpm yarn $nvm_lazy_cmd
2022-11-15 20:23:09 +01:00
# Load nvm if it exists in \$NVM_DIR
[ [ -f \" \$ NVM_DIR/nvm.sh\" ] ] && source \" \$ NVM_DIR/nvm.sh\"
\" \$ 0\" \" \$ @\"
}
"
unset nvm_lazy_cmd
2022-10-06 21:01:56 +02:00
elif [ [ -f " $NVM_DIR /nvm.sh " ] ] ; then
2020-10-09 16:12:03 +02:00
# Load nvm if it exists in $NVM_DIR
2022-10-06 21:01:56 +02:00
source " $NVM_DIR /nvm.sh "
2022-04-24 18:58:36 +02:00
else
return
2020-10-09 16:12:03 +02:00
fi
2020-10-08 17:21:34 +02:00
2017-01-14 02:15:12 +01:00
# Autoload nvm when finding a .nvmrc file in the current directory
# Adapted from: https://github.com/nvm-sh/nvm#zsh
2022-11-15 20:23:09 +01:00
if zstyle -t ':omz:plugins:nvm' autoload; then
2022-12-01 19:44:48 +01:00
function load-nvmrc {
2017-01-14 02:15:12 +01:00
local node_version = " $( nvm version) "
local nvmrc_path = " $( nvm_find_nvmrc) "
2022-12-01 19:44:48 +01:00
local nvm_silent = ""
2022-12-06 18:22:13 +01:00
zstyle -t ':omz:plugins:nvm' silent-autoload && nvm_silent = "--silent"
2017-01-14 02:15:12 +01:00
if [ [ -n " $nvmrc_path " ] ] ; then
2022-12-01 19:49:41 +01:00
local nvmrc_node_version = $( nvm version $( cat " $nvmrc_path " | tr -dc '[:print:]' ) )
2017-01-14 02:15:12 +01:00
if [ [ " $nvmrc_node_version " = "N/A" ] ] ; then
nvm install
elif [ [ " $nvmrc_node_version " != " $node_version " ] ] ; then
2022-12-01 19:44:48 +01:00
nvm use $nvm_silent
2017-01-14 02:15:12 +01:00
fi
elif [ [ " $node_version " != " $( nvm version default) " ] ] ; then
2022-12-06 18:22:13 +01:00
if [ [ -z $nvm_silent ] ] ; then
echo "Reverting to nvm default version"
fi
2022-12-01 19:44:48 +01:00
nvm use default $nvm_silent
2017-01-14 02:15:12 +01:00
fi
}
autoload -U add-zsh-hook
add-zsh-hook chpwd load-nvmrc
load-nvmrc
fi
2020-10-09 16:12:03 +02:00
# Load nvm bash completion
for nvm_completion in " $NVM_DIR /bash_completion " " $NVM_HOMEBREW /etc/bash_completion.d/nvm " ; do
if [ [ -f " $nvm_completion " ] ] ; then
# Load bashcompinit
autoload -U +X bashcompinit && bashcompinit
# Bypass compinit call in nvm bash completion script. See:
# https://github.com/nvm-sh/nvm/blob/4436638/bash_completion#L86-L93
ZSH_VERSION = source " $nvm_completion "
break
2015-09-10 10:10:18 +02:00
fi
2020-10-09 16:12:03 +02:00
done
2022-11-15 20:23:09 +01:00
unset NVM_HOMEBREW nvm_completion