From a7eb216330eff2f2f0f7be540abe911770b17b79 Mon Sep 17 00:00:00 2001 From: Guilherme Rugai Freire <41879254+GRFreire@users.noreply.github.com> Date: Fri, 20 Aug 2021 17:14:13 -0300 Subject: [PATCH] zsh: source fast-nvm script this makes so if you cd into a directory with a .nvmrc, it will exec nvm use --- .fast-nvm.sh | 27 +++++++++++++++++++++++++++ .zshrc | 5 +---- 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 .fast-nvm.sh 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