2023-03-16 20:45:13 +00:00
|
|
|
#!/bin/zsh
|
|
|
|
|
#
|
|
|
|
|
# Custom plugin to check the .nvmrc file. When entering a directory, it checks
|
|
|
|
|
# to see if you have the desired node version installed for the current
|
|
|
|
|
# project. If it is, it will use it automatically, if not, then it will ask you
|
|
|
|
|
# if you want to install it. After, it will install all the JS developer tools
|
|
|
|
|
# for that version of NodeJS.
|
|
|
|
|
#
|
|
|
|
|
# This is a different implementation than the default oh-my-zsh version. The
|
|
|
|
|
# main difference is that it will not reset the node version when leaving a
|
|
|
|
|
# directory. It will only preform an action if there is a `.nvmrc` file in the
|
|
|
|
|
# current directory. It will not even use the `nvm_find_nvmrc` command because
|
|
|
|
|
# any interaction with nvm make the stranded `cd` command extremely sluggish.
|
|
|
|
|
|
|
|
|
|
maybe_nvm_install() {
|
|
|
|
|
local version="$1"
|
|
|
|
|
|
|
|
|
|
if read -q "do?Node version ${version} is not installed, would you like to install it? (Y/N) "; then
|
|
|
|
|
echo ""
|
|
|
|
|
nvm install "${version}"
|
|
|
|
|
|
|
|
|
|
echo "Installing all of the JS developer tools for this version of node with npm"
|
2023-11-08 07:56:41 +00:00
|
|
|
npm install -g yarn typescript-language-server typescript emmet-ls cspell vscode-langservers-extracted prettier jsdoc eslint eslint_d
|
2023-03-16 20:45:13 +00:00
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
load_nvmrc() {
|
|
|
|
|
local nvmrc_path=".nvmrc"
|
|
|
|
|
|
|
|
|
|
if [[ -f "$nvmrc_path" ]]; then
|
|
|
|
|
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
|
|
|
|
|
|
|
|
|
|
if [[ "$nvmrc_node_version" = "N/A" ]]; then
|
|
|
|
|
maybe_nvm_install "$(cat "${nvmrc_path}")"
|
|
|
|
|
else
|
|
|
|
|
nvm use > /dev/null
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
autoload -U add-zsh-hook
|
|
|
|
|
add-zsh-hook chpwd load_nvmrc
|
|
|
|
|
|
|
|
|
|
load_nvmrc
|