diff --git a/nvm.sh b/nvm.sh index e4654ae..c17d0bc 100644 --- a/nvm.sh +++ b/nvm.sh @@ -792,9 +792,17 @@ nvm() { nvm help return 127 fi - VERSION="$(nvm_version "$2")" - # declare local INSTALLS first, otherwise it doesn't work in zsh + local PROVIDED_VERSION + PROVIDED_VERSION="$2" + + if [ "$PROVIDED_VERSION" = "$(nvm_ls_current)" ]; then + echo 'Can not copy packages from the current version of node.' >&2 + return 2 + fi + + local VERSION + VERSION="$(nvm_version "$PROVIDED_VERSION")" local INSTALLS INSTALLS=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs) diff --git "a/test/slow/nvm copy-packages/Running \"nvm copy-packages $(nvm ls current)\" should error out" "b/test/slow/nvm copy-packages/Running \"nvm copy-packages $(nvm ls current)\" should error out" new file mode 100644 index 0000000..2e0d058 --- /dev/null +++ "b/test/slow/nvm copy-packages/Running \"nvm copy-packages $(nvm ls current)\" should error out" @@ -0,0 +1,12 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../nvm.sh + +local EXPECTED_MSG="Can not copy packages from the current version of node." +[ "$(nvm use 0.10.28 && nvm copy-packages 0.10.28 2&>1)" = "$EXPECTED_MSG" ] || die '"nvm use 0.10.28 && nvm copy-packages 0.10.28" did not fail with the right message' + +$(nvm use 0.10.28 && nvm copy-packages 0.10.28) +[ $? = 2 ] || die '"nvm use 0.10.28 && nvm copy-packages 0.10.28" did not fail with the right error code' +