From c4614a980a287a004981f015a93fd07088ce85ca Mon Sep 17 00:00:00 2001 From: dclayton Date: Tue, 8 Dec 2015 19:50:13 -0700 Subject: [PATCH] added --upgrade-npm to install command --- nvm.sh | 22 +++++++++++++++++++ .../node/install while upgrading npm | 17 ++++++++++++++ test/slow/nvm upgrade-npm/setup_dir | 9 ++++++++ .../nvm upgrade-npm/should work as expected | 15 +++++++++++++ test/slow/nvm upgrade-npm/teardown_dir | 6 +++++ 5 files changed, 69 insertions(+) create mode 100755 test/installation/node/install while upgrading npm create mode 100755 test/slow/nvm upgrade-npm/setup_dir create mode 100755 test/slow/nvm upgrade-npm/should work as expected create mode 100755 test/slow/nvm upgrade-npm/teardown_dir diff --git a/nvm.sh b/nvm.sh index c6b8f83..52e776f 100755 --- a/nvm.sh +++ b/nvm.sh @@ -1463,6 +1463,7 @@ nvm() { echo ' nvm --version Print out the latest released version of nvm' echo ' nvm install [-s] Download and install a , [-s] from source. Uses .nvmrc if available' echo ' --reinstall-packages-from= When installing, reinstall packages installed in ' + echo ' --upgrade-npm= When installing, upgrades NPM to the specified version' echo ' nvm uninstall Uninstall a version' echo ' nvm use [--silent] Modify PATH to use . Uses .nvmrc if available' echo ' nvm exec [--silent] [] Run on . Uses .nvmrc if available' @@ -1478,6 +1479,7 @@ nvm() { echo ' nvm alias Set an alias named pointing to ' echo ' nvm unalias Deletes the alias named ' echo ' nvm reinstall-packages Reinstall global `npm` packages contained in to current version' + echo ' nvm upgrade-npm Upgrades NPM to the specified version' echo ' nvm unload Unload `nvm` from shell' echo ' nvm which [] Display path to installed node version. Uses .nvmrc if available' echo @@ -1568,6 +1570,7 @@ nvm() { ADDITIONAL_PARAMETERS='' local PROVIDED_REINSTALL_PACKAGES_FROM local REINSTALL_PACKAGES_FROM + local UPGRADE_NPM_VERSION while [ $# -ne 0 ] do @@ -1580,6 +1583,9 @@ nvm() { PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 22-)" REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")" ;; + --upgrade-npm=*) + UPGRADE_NPM_VERSION="$(echo "$1" | command cut -c 15-)" + ;; *) ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1" ;; @@ -1652,6 +1658,10 @@ nvm() { fi if [ "$NVM_INSTALL_SUCCESS" = true ] && nvm use "$VERSION"; then + if [ ! -z "$UPGRADE_NPM_VERSION" ]; then + nvm upgrade-npm "$UPGRADE_NPM_VERSION" + fi + if [ ! -z "$REINSTALL_PACKAGES_FROM" ] \ && [ "_$REINSTALL_PACKAGES_FROM" != "_N/A" ]; then nvm reinstall-packages "$REINSTALL_PACKAGES_FROM" @@ -2166,6 +2176,18 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' command rm -f "$NVM_ALIAS_DIR/$2" echo "Deleted alias $2" ;; + "upgrade-npm" ) + if [ $# -ne 2 ]; then + >&2 nvm help + return 127 + fi + + local NPM_VERSION + NPM_VERSION="$2" + + echo "Upgrading npm version to $NPM_VERSION" + npm install -g "npm@$NPM_VERSION" + ;; "reinstall-packages" | "copy-packages" ) if [ $# -ne 2 ]; then >&2 nvm help diff --git a/test/installation/node/install while upgrading npm b/test/installation/node/install while upgrading npm new file mode 100755 index 0000000..2c2e551 --- /dev/null +++ b/test/installation/node/install while upgrading npm @@ -0,0 +1,17 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../../nvm.sh + +# Remove the stuff we're clobbering. +[ -e ../../../versions/node/v4.2.3 ] && rm -R ../../../versions/node/v4.2.3 + +# Install from binary +nvm install 4.2.3 --upgrade-npm=3.5.1 + +# Check +[ -d ../../../versions/node/v4.2.3 ] || die "nvm install 4.2.3 didn't install" + +npm --version | grep 3.5.1 || die "nvm install did not upgrade NPM" + diff --git a/test/slow/nvm upgrade-npm/setup_dir b/test/slow/nvm upgrade-npm/setup_dir new file mode 100755 index 0000000..06c818e --- /dev/null +++ b/test/slow/nvm upgrade-npm/setup_dir @@ -0,0 +1,9 @@ +#!/bin/sh + +. ../../../nvm.sh + +# ensure version does not already exist +[ -e ../../../versions/node/v4.2.3 ] && rm -R ../../../versions/node/v4.2.3 + +nvm install 4.2.3 + diff --git a/test/slow/nvm upgrade-npm/should work as expected b/test/slow/nvm upgrade-npm/should work as expected new file mode 100755 index 0000000..5cda718 --- /dev/null +++ b/test/slow/nvm upgrade-npm/should work as expected @@ -0,0 +1,15 @@ +#!/bin/sh + +die () { echo "$@" ; exit 1; } + +. ../../../nvm.sh + +EXPECTED_VERSION="3.5.1" + +OLD_VERSION=$(npm --version) +[ "$EXPECTED_VERSION" != "$OLD_VERSION" ] || die "NPM version already at $EXPECTED_VERSION" + +nvm upgrade-npm $EXPECTED_VERSION +ACTUAL_VERSION=$(npm --version) + +[ "$EXPECTED_VERSION" = "$ACTUAL_VERSION" ] || die "NPM package was not upgraded" diff --git a/test/slow/nvm upgrade-npm/teardown_dir b/test/slow/nvm upgrade-npm/teardown_dir new file mode 100755 index 0000000..e45cc6c --- /dev/null +++ b/test/slow/nvm upgrade-npm/teardown_dir @@ -0,0 +1,6 @@ +#!/bin/sh + +. ../../../nvm.sh + +#remove installed version +[ -e ../../../versions/node/v4.2.3 ] && rm -R ../../../versions/node/v4.2.3 \ No newline at end of file