diff --git a/.fast-nvm.sh b/.fast-nvm.sh new file mode 100644 index 0000000..3576bb7 --- /dev/null +++ b/.fast-nvm.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +locate_nvmrc() { + locate -w .nvmrc | xargs -I'{}' realpath --relative-to=. '{}' | awk '/^(\.\.\/)*\.nvmrc$/ {print $0}' | sort | xargs -I'{}' realpath '{}' +} + +export PATH="$HOME/.nvm/versions/node/$(/bin/cat $HOME/.nvm/alias/default)/bin:$PATH" +nvm() { + . $HOME/.nvm/nvm.sh; nvm "$@" +} + +DEFAULT=$(locate_nvmrc) +cd() { + if builtin cd "$@" 2>/dev/null; then + FOUND="$(locate_nvmrc)" + if [ "$DEFAULT" != "$FOUND" ]; then + DEFAULT=$FOUND + nvm use + fi + else + if test -f "$@"; then echo "cd: not a directory: $*" + elif test -d "$@"; then echo "cd: can not change to $*" + else echo "cd: no such file or directory: $*" + fi + return 1 + fi +} diff --git a/.zshrc b/.zshrc index 39d456d..b94bceb 100644 --- a/.zshrc +++ b/.zshrc @@ -60,10 +60,7 @@ alias zathura="devour zathura" alias ranger="source ranger" # This loads nvm -export PATH="$HOME/.nvm/versions/node/$(/bin/cat $HOME/.nvm/alias/default)/bin:$PATH" -nvm() { - source $HOME/.nvm/nvm.sh; nvm "$@" -} +source $HOME/.fast-nvm.sh # Check if is integrated terminal emulator if [ -z "$INTEG_EMU" ]; then