2019-04-27 15:38:14 +08: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-07 03:01:56 +08: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 15:38:14 +08:00
fi
fi
2013-09-05 06:07:58 +08:00
2020-10-09 22:12:03 +08:00
# Don't try to load nvm if command already available
2022-04-25 00:58:36 +08:00
# Note: nvm is a function so we need to use `which`
2022-10-07 03:01:56 +08:00
which nvm & >/dev/null && return
2020-10-08 23:21:34 +08:00
2022-11-16 03:23:09 +08: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
echo " zstyle ':omz:plugins:nvm' autoload true"
zstyle ':omz:plugins:nvm' autoload yes
fi
if ( ( $+NVM_LAZY ) ) ; then
echo " zstyle ':omz:plugins:nvm' lazy true"
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 "
function nvm node npm pnpm yarn $nvm_lazy_cmd {
unfunction nvm node npm pnpm yarn $nvm_lazy_cmd
# 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-07 03:01:56 +08:00
elif [ [ -f " $NVM_DIR /nvm.sh " ] ] ; then
2020-10-09 22:12:03 +08:00
# Load nvm if it exists in $NVM_DIR
2022-10-07 03:01:56 +08:00
source " $NVM_DIR /nvm.sh "
2022-04-25 00:58:36 +08:00
else
return
2020-10-09 22:12:03 +08:00
fi
2020-10-08 23:21:34 +08:00
2017-01-14 09:15:12 +08:00
# Autoload nvm when finding a .nvmrc file in the current directory
# Adapted from: https://github.com/nvm-sh/nvm#zsh
2022-11-16 03:23:09 +08:00
if zstyle -t ':omz:plugins:nvm' autoload; then
2017-01-14 09:15:12 +08:00
load-nvmrc( ) {
local node_version = " $( nvm version) "
local nvmrc_path = " $( nvm_find_nvmrc) "
if [ [ -n " $nvmrc_path " ] ] ; then
local nvmrc_node_version = $( nvm version " $( cat " ${ nvmrc_path } " ) " )
if [ [ " $nvmrc_node_version " = "N/A" ] ] ; then
nvm install
elif [ [ " $nvmrc_node_version " != " $node_version " ] ] ; then
nvm use
fi
elif [ [ " $node_version " != " $( nvm version default) " ] ] ; then
echo "Reverting to nvm default version"
nvm use default
fi
}
autoload -U add-zsh-hook
add-zsh-hook chpwd load-nvmrc
load-nvmrc
fi
2020-10-09 22:12:03 +08: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 16:10:18 +08:00
fi
2020-10-09 22:12:03 +08:00
done
2022-11-16 03:23:09 +08:00
unset NVM_HOMEBREW nvm_completion