From 152904e3fb9879ad508deafda643ff9b9bc54104 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 07:51:00 -0700 Subject: [PATCH 1/6] Return a nonzero exit code from nvm_rc_version when no .nvmrc found --- nvm.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nvm.sh b/nvm.sh index 3069309..b657af9 100644 --- a/nvm.sh +++ b/nvm.sh @@ -98,6 +98,9 @@ nvm_rc_version() { if [ -e "$NVMRC_PATH" ]; then read NVM_RC_VERSION < "$NVMRC_PATH" echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>" + else + >&2 echo "No .nvmrc file found" + return 1 fi } From d5d66c34d989c569a8e3242f5e692d0b77be28a3 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 07:54:30 -0700 Subject: [PATCH 2/6] If there's no "default" specified, fall back to an .nvmrc file. --- nvm.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nvm.sh b/nvm.sh index b657af9..c076373 100644 --- a/nvm.sh +++ b/nvm.sh @@ -842,5 +842,9 @@ nvm() { esac } -nvm ls default >/dev/null && nvm use default >/dev/null || true +if nvm ls default >/dev/null; then + nvm use default >/dev/null +elif nvm_rc_version >/dev/null 2>&1; then + nvm use >/dev/null +fi From e0a22ccf4a98accf9f1feadac9e7ca20590df42c Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 08:54:44 -0700 Subject: [PATCH 3/6] Unit tests: add `nvm_has` --- test/fast/Unit tests/nvm_has | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 test/fast/Unit tests/nvm_has diff --git a/test/fast/Unit tests/nvm_has b/test/fast/Unit tests/nvm_has new file mode 100755 index 0000000..437d26f --- /dev/null +++ b/test/fast/Unit tests/nvm_has @@ -0,0 +1,12 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../../nvm.sh + +nvm_has cat && type cat > /dev/null || die 'nvm_has locates "cat" properly' + +[ "~$(nvm_has foobarbaz 2>&1)" = "~" ] || die "nvm_has does not suppress error output" + +! nvm_has foobarbaz && ! type foobarbaz >/dev/null 2>&1 || die "nvm_has does not return a nonzero exit code when not found" + From 97d4e2f88f4642006671fe446a65d9ddf0cd0d32 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 09:09:56 -0700 Subject: [PATCH 4/6] Unit tests: add `nvm_find_up` --- test/fast/Unit tests/nvm_find_up | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100755 test/fast/Unit tests/nvm_find_up diff --git a/test/fast/Unit tests/nvm_find_up b/test/fast/Unit tests/nvm_find_up new file mode 100755 index 0000000..39fb568 --- /dev/null +++ b/test/fast/Unit tests/nvm_find_up @@ -0,0 +1,26 @@ +#!/bin/sh + +die () { echo $@ ; cleanup ; exit 1; } +setup() { + cleanup + mkdir -p tmp_nvm_find_up/a/b/c/d + touch tmp_nvm_find_up/test + touch tmp_nvm_find_up/a/b/c/test +} +cleanup () { + rm -rf tmp_nvm_find_up +} + +. ../../../nvm.sh + +setup + +TEST_DIR="$PWD" + +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 1 dir up" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up" ] || die "failed to find 2 dirs up" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find in current dir" +[ "~$(PWD=$TEST_DIR/tmp_nvm_find_up/a/b/c/d nvm_find_up 'test')" = "~$TEST_DIR/tmp_nvm_find_up/a/b/c" ] || die "failed to find 1 level up from current dir" + +cleanup + From f6e010468552fed9d25c24819b6f5e8abe1baa02 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 09:17:27 -0700 Subject: [PATCH 5/6] Use `nvm_normalize_version` in `nvm_version_greater` --- nvm.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nvm.sh b/nvm.sh index c076373..aeefc92 100644 --- a/nvm.sh +++ b/nvm.sh @@ -106,9 +106,9 @@ nvm_rc_version() { nvm_version_greater() { local LHS - LHS=$(echo "$1" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}') + LHS=$(nvm_normalize_version "$1") local RHS - RHS=$(echo "$2" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}') + RHS=$(nvm_normalize_version "$2") [ $LHS -gt $RHS ]; } @@ -174,7 +174,7 @@ nvm_remote_version() { } nvm_normalize_version() { - echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }' + echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }' } nvm_format_version() { From e186fa27a7ea88092c1d42a6d823c53f4883f023 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 15 Sep 2014 09:20:47 -0700 Subject: [PATCH 6/6] Use `nvm_version_greater` in `nvm_binary_available` --- nvm.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/nvm.sh b/nvm.sh index aeefc92..f6e9511 100644 --- a/nvm.sh +++ b/nvm.sh @@ -195,11 +195,9 @@ nvm_prepend_path() { nvm_binary_available() { # binaries started with node 0.8.6 - local MINIMAL - MINIMAL="0.8.6" - local VERSION - VERSION=$1 - [ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ] + local LAST_VERSION_WITHOUT_BINARY + LAST_VERSION_WITHOUT_BINARY="0.8.5" + nvm_version_greater "$1" "$LAST_VERSION_WITHOUT_BINARY" } nvm_ls_current() {