Merge pull request #518 from creationix/nvm_copy_packages_system
Make `nvm copy-packages system` work
diff --git a/nvm.sh b/nvm.sh
index e4654ae..d127da3 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -792,11 +792,27 @@
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 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)
+ if [ "$PROVIDED_VERSION" = "system" ]; then
+ if ! nvm_has_system_node; then
+ echo 'No system version of node detected.' >&2
+ return 3
+ fi
+ INSTALLS=$(nvm deactivate > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs)
+ else
+ local VERSION
+ VERSION="$(nvm_version "$PROVIDED_VERSION")"
+ INSTALLS=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | xargs)
+ fi
echo "$INSTALLS" | xargs npm install -g --quiet
;;
diff --git "a/test/slow/nvm copy-packages/Running \"nvm copy-packages $\050nvm ls current\051\" should error out" "b/test/slow/nvm copy-packages/Running \"nvm copy-packages $\050nvm ls current\051\" should error out"
new file mode 100644
index 0000000..2e0d058
--- /dev/null
+++ "b/test/slow/nvm copy-packages/Running \"nvm copy-packages $\050nvm ls current\051\" 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'
+