Copy packages when applicable, whenever `nvm install` would normally `nvm use` and exit.
diff --git a/nvm.sh b/nvm.sh
index 9e7af08..240e53f 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -496,7 +496,9 @@
if [ -d "$(nvm_version_path "$VERSION")" ]; then
echo "$VERSION is already installed." >&2
- nvm use "$VERSION"
+ if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "~$COPY_PACKAGES_FROM" != "~N/A" ]; then
+ nvm copy-packages "$COPY_PACKAGES_FROM"
+ fi
return $?
fi
@@ -526,7 +528,9 @@
mv "$tmpdir" "$(nvm_version_path "$VERSION")"
)
then
- nvm use $VERSION
+ if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "~$COPY_PACKAGES_FROM" != "~N/A" ]; then
+ nvm copy-packages "$COPY_PACKAGES_FROM"
+ fi
return $?
else
echo "Binary download failed, trying source." >&2
@@ -570,7 +574,9 @@
$make $MAKE_CXX install
)
then
- nvm use $VERSION
+ if nvm use "$VERSION" && [ ! -z "$COPY_PACKAGES_FROM" ] && [ "~$COPY_PACKAGES_FROM" != "~N/A" ]; then
+ nvm copy-packages "$COPY_PACKAGES_FROM"
+ fi
if ! nvm_has "npm" ; then
echo "Installing npm..."
if nvm_version_greater 0.2.0 "$VERSION"; then
@@ -589,6 +595,8 @@
echo "nvm: install $VERSION failed!" >&2
return 1
fi
+
+ return $?
;;
"uninstall" )
[ $# -ne 2 ] && nvm help && return
diff --git a/test/installation/install while copying packages b/test/installation/install while copying packages
new file mode 100755
index 0000000..45cafb5
--- /dev/null
+++ b/test/installation/install while copying packages
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+die () { echo $@ ; exit 1; }
+
+. ../../nvm.sh
+
+# Remove the stuff we're clobbering.
+[ -e ../../v0.9.7 ] && rm -R ../../v0.9.7
+[ -e ../../v0.9.12 ] && rm -R ../../v0.9.12
+
+# Install from binary
+nvm install 0.9.7
+
+# Check
+[ -d ../../v0.9.7 ] || die "nvm install 0.9.7 didn't install"
+
+nvm use 0.9.7
+
+node --version | grep v0.9.7 > /dev/null || die "nvm use 0.9.7 failed"
+
+npm install -g is-nan@1.0.1 || die "npm install -g is-nan failed"
+npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
+
+nvm ls 0.9 | grep v0.9.7 > /dev/null || die "nvm ls 0.9 didn't show v0.9.7"
+
+nvm install 0.9.12 --copy-packages-from=0.9 || die "nvm install 0.9.12 --copy-packages-from=0.9 failed"
+
+[ -d ../../v0.9.12 ] || die "nvm install 0.9.12 didn't install"
+
+nvm use 0.9
+node --version | grep v0.9.12 > /dev/null || die "nvm ls 0.9 didn't use v0.9.12"
+
+npm list --global | grep is-nan > /dev/null || die "is-nan isn't installed"
+