From 25c0be1e20968b9b68dc221fb2de168b19bc80b3 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 5 Jul 2014 13:51:13 -0700 Subject: [PATCH 1/7] Using an `nvm_curl` function instead of `curl`/`wget` directly. --- install.sh | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/install.sh b/install.sh index 3879245..3cf4a0a 100755 --- a/install.sh +++ b/install.sh @@ -11,16 +11,18 @@ if [ -z "$NVM_DIR" ]; then NVM_DIR="$HOME/.nvm" fi -if ! nvm_has "curl"; then - if nvm_has "wget"; then - # Emulate curl with wget - curl() { - ARGS="$* " - ARGS=${ARGS/-s /-q } - ARGS=${ARGS/-o /-O } - wget "$ARGS" - } - fi +if nvm_has "curl"; then + nvm_curl() { + curl $* + } +elif nvm_has "wget"; then + # Emulate curl with wget + nvm_curl() { + ARGS="$* " + ARGS=${ARGS/-s /-q } + ARGS=${ARGS/-o /-O } + wget "$ARGS" + } fi install_nvm_from_git() { @@ -55,7 +57,7 @@ install_nvm_as_script() { else echo "=> Downloading nvm as script to '$NVM_DIR'" fi - curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || { + nvm_curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || { echo >&2 "Failed to download '$NVM_SOURCE'.." return 1 } @@ -65,7 +67,7 @@ if [ -z "$METHOD" ]; then # Autodetect install method if nvm_has "git"; then install_nvm_from_git - elif nvm_has "curl"; then + elif nvm_has "nvm_curl"; then install_nvm_as_script else echo >&2 "You need git, curl, or wget to install nvm" @@ -80,7 +82,7 @@ else install_nvm_from_git fi if [ "$METHOD" = "script" ]; then - if ! nvm_has "curl"; then + if ! nvm_has "nvm_curl"; then echo >&2 "You need curl or wget to install nvm" exit 1 fi From b9383c9016efbcd4c23b5efa9ebaac4793d7a1f1 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 5 Jul 2014 13:52:49 -0700 Subject: [PATCH 2/7] Use `nvm_curl` instead of `curl` directly, which has a `wget` fallback. --- nvm.sh | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/nvm.sh b/nvm.sh index 6b94dda..9cd4e29 100644 --- a/nvm.sh +++ b/nvm.sh @@ -12,6 +12,20 @@ nvm_has() { return $? } +if nvm_has "curl"; then + nvm_curl() { + curl $* + } +elif nvm_has "wget"; then + # Emulate curl with wget + nvm_curl() { + ARGS="$* " + ARGS=${ARGS/-s /-q } + ARGS=${ARGS/-o /-O } + wget "$ARGS" + } +fi + # Make zsh glob matching behave same as bash # This fixes the "zsh: no matches found" errors if nvm_has "unsetopt"; then @@ -164,7 +178,7 @@ nvm_ls_remote() { else PATTERN=".*" fi - VERSIONS=`curl -s $NVM_NODEJS_ORG_MIRROR/ \ + VERSIONS=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/ \ | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \ | \grep -w "${PATTERN}" \ | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n` @@ -290,8 +304,8 @@ nvm() { version_not_provided=0 local provided_version - if ! nvm_has "curl"; then - echo 'NVM Needs curl to proceed.' >&2; + if ! nvm_has "nvm_curl"; then + echo 'nvm needs curl or wget to proceed.' >&2; return 1 fi @@ -354,14 +368,14 @@ nvm() { if nvm_binary_available "$VERSION"; then t="$VERSION-$os-$arch" url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz" - sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'` + sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'` local tmpdir tmpdir="$NVM_DIR/bin/node-${t}" local tmptarball tmptarball="$tmpdir/node-${t}.tar.gz" if ( mkdir -p "$tmpdir" && \ - curl -L -C - --progress-bar $url -o "$tmptarball" && \ + nvm_curl -L -C - --progress-bar $url -o "$tmptarball" && \ nvm_checksum "$tmptarball" $sum && \ tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \ rm -f "$tmptarball" && \ @@ -391,16 +405,16 @@ nvm() { tmpdir="$NVM_DIR/src" local tmptarball tmptarball="$tmpdir/node-$VERSION.tar.gz" - if [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + if [ "`nvm_curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" - sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'` - elif [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'` + elif [ "`nvm_curl -Is "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" fi if ( [ -n "$tarball" ] && \ mkdir -p "$tmpdir" && \ - curl -L --progress-bar $tarball -o "$tmptarball" && \ + nvm_curl -L --progress-bar $tarball -o "$tmptarball" && \ nvm_checksum "$tmptarball" $sum && \ tar -xzf "$tmptarball" -C "$tmpdir" && \ cd "$tmpdir/node-$VERSION" && \ @@ -419,10 +433,10 @@ nvm() { if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then echo "npm requires node v0.2.3 or higher" >&2 else - curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh + nvm_curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh fi else - curl https://npmjs.org/install.sh | clean=yes sh + nvm_curl https://npmjs.org/install.sh | clean=yes sh fi fi else From eda8ffbcc4dd27bb5acdbdbb9f77cf943649831a Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 7 Jul 2014 09:55:03 -0700 Subject: [PATCH 3/7] =?UTF-8?q?Add=20some=20more=20curl=20=E2=86=92=20wget?= =?UTF-8?q?=20argument=20munging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 3 +++ nvm.sh | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/install.sh b/install.sh index 3cf4a0a..a9f88ed 100755 --- a/install.sh +++ b/install.sh @@ -19,8 +19,11 @@ elif nvm_has "wget"; then # Emulate curl with wget nvm_curl() { ARGS="$* " + ARGS=${ARGS/--progress-bar /} + ARGS=${ARGS/-L /} ARGS=${ARGS/-s /-q } ARGS=${ARGS/-o /-O } + ARGS=${ARGS/-C /-c } wget "$ARGS" } fi diff --git a/nvm.sh b/nvm.sh index 9cd4e29..b6a12dd 100644 --- a/nvm.sh +++ b/nvm.sh @@ -20,8 +20,12 @@ elif nvm_has "wget"; then # Emulate curl with wget nvm_curl() { ARGS="$* " + ARGS=${ARGS/--progress-bar /} + ARGS=${ARGS/-L /} + ARGS=${ARGS/-I /} ARGS=${ARGS/-s /-q } ARGS=${ARGS/-o /-O } + ARGS=${ARGS/-C /-c } wget "$ARGS" } fi From 74cc1eb022837de493cfee649a18fcdc2a1e55c5 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 7 Jul 2014 10:04:20 -0700 Subject: [PATCH 4/7] Make `nvm_curl` do a runtime check if `curl` is available. --- install.sh | 19 +++++++++---------- nvm.sh | 16 +++++++--------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/install.sh b/install.sh index a9f88ed..e86cd4a 100755 --- a/install.sh +++ b/install.sh @@ -11,22 +11,21 @@ if [ -z "$NVM_DIR" ]; then NVM_DIR="$HOME/.nvm" fi -if nvm_has "curl"; then - nvm_curl() { +nvm_curl() { + if nvm_has "curl"; then curl $* - } -elif nvm_has "wget"; then - # Emulate curl with wget - nvm_curl() { - ARGS="$* " + elif nvm_has "wget"; then + # Emulate curl with wget + ARGS="$*" ARGS=${ARGS/--progress-bar /} ARGS=${ARGS/-L /} + ARGS=${ARGS/-I /} ARGS=${ARGS/-s /-q } ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } - wget "$ARGS" - } -fi + wget $ARGS + fi +} install_nvm_from_git() { if [ -z "$NVM_SOURCE" ]; then diff --git a/nvm.sh b/nvm.sh index b6a12dd..e0a30aa 100644 --- a/nvm.sh +++ b/nvm.sh @@ -12,14 +12,12 @@ nvm_has() { return $? } -if nvm_has "curl"; then - nvm_curl() { +nvm_curl() { + if nvm_has "curl"; then curl $* - } -elif nvm_has "wget"; then - # Emulate curl with wget - nvm_curl() { - ARGS="$* " + elif nvm_has "wget"; then + # Emulate curl with wget + ARGS="$*" ARGS=${ARGS/--progress-bar /} ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} @@ -27,8 +25,8 @@ elif nvm_has "wget"; then ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } wget "$ARGS" - } -fi + fi +} # Make zsh glob matching behave same as bash # This fixes the "zsh: no matches found" errors From 018e47bec0573fc9576e7a9d1e6fd59530a722af Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 7 Jul 2014 13:32:08 -0700 Subject: [PATCH 5/7] Make sure both wget and curl work. --- install.sh | 6 ++++-- nvm.sh | 12 +++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index e86cd4a..49a850b 100755 --- a/install.sh +++ b/install.sh @@ -17,12 +17,14 @@ nvm_curl() { elif nvm_has "wget"; then # Emulate curl with wget ARGS="$*" - ARGS=${ARGS/--progress-bar /} + echo "original: $ARGS" + ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} - ARGS=${ARGS/-s /-q } + ARGS=${ARGS/-s /-qO- } ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } + ARGS=${ARGS/ - / } wget $ARGS fi } diff --git a/nvm.sh b/nvm.sh index e0a30aa..ee2c9d2 100644 --- a/nvm.sh +++ b/nvm.sh @@ -18,13 +18,15 @@ nvm_curl() { elif nvm_has "wget"; then # Emulate curl with wget ARGS="$*" - ARGS=${ARGS/--progress-bar /} + echo "original: $ARGS" + ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} - ARGS=${ARGS/-s /-q } + ARGS=${ARGS/-s /-qO- } ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } - wget "$ARGS" + ARGS=${ARGS/ - / } + wget $ARGS fi } @@ -407,10 +409,10 @@ nvm() { tmpdir="$NVM_DIR/src" local tmptarball tmptarball="$tmpdir/node-$VERSION.tar.gz" - if [ "`nvm_curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + if [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'` - elif [ "`nvm_curl -Is "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + elif [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" fi if ( From df4689fbd281a1cc68c6a8707d35f9d25ccf5f39 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Mon, 7 Jul 2014 13:59:58 -0700 Subject: [PATCH 6/7] Removing an extra "echo" --- install.sh | 1 - nvm.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/install.sh b/install.sh index 49a850b..00ec1fa 100755 --- a/install.sh +++ b/install.sh @@ -17,7 +17,6 @@ nvm_curl() { elif nvm_has "wget"; then # Emulate curl with wget ARGS="$*" - echo "original: $ARGS" ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} diff --git a/nvm.sh b/nvm.sh index ee2c9d2..a762363 100644 --- a/nvm.sh +++ b/nvm.sh @@ -18,7 +18,6 @@ nvm_curl() { elif nvm_has "wget"; then # Emulate curl with wget ARGS="$*" - echo "original: $ARGS" ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} From a0de15d0f7b3fa240aaa6b4a2bb0a53fd3b28df8 Mon Sep 17 00:00:00 2001 From: Koen Punt Date: Mon, 7 Jul 2014 23:16:20 +0200 Subject: [PATCH 7/7] fix nvm_curl arguments for stdout --- install.sh | 3 +-- nvm.sh | 17 ++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 00ec1fa..8f2f630 100755 --- a/install.sh +++ b/install.sh @@ -20,10 +20,9 @@ nvm_curl() { ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} - ARGS=${ARGS/-s /-qO- } + ARGS=${ARGS/-s /-q } ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } - ARGS=${ARGS/ - / } wget $ARGS fi } diff --git a/nvm.sh b/nvm.sh index a762363..a483aa7 100644 --- a/nvm.sh +++ b/nvm.sh @@ -21,10 +21,9 @@ nvm_curl() { ARGS=${ARGS/--progress-bar /--progress=bar } ARGS=${ARGS/-L /} ARGS=${ARGS/-I /} - ARGS=${ARGS/-s /-qO- } + ARGS=${ARGS/-s /-q } ARGS=${ARGS/-o /-O } ARGS=${ARGS/-C /-c } - ARGS=${ARGS/ - / } wget $ARGS fi } @@ -181,7 +180,7 @@ nvm_ls_remote() { else PATTERN=".*" fi - VERSIONS=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/ \ + VERSIONS=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/ -o - \ | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \ | \grep -w "${PATTERN}" \ | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n` @@ -371,7 +370,7 @@ nvm() { if nvm_binary_available "$VERSION"; then t="$VERSION-$os-$arch" url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz" - sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'` + sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | awk '{print $1}'` local tmpdir tmpdir="$NVM_DIR/bin/node-${t}" local tmptarball @@ -408,10 +407,10 @@ nvm() { tmpdir="$NVM_DIR/src" local tmptarball tmptarball="$tmpdir/node-$VERSION.tar.gz" - if [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + if [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" - sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'` - elif [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then + sum=`nvm_curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | awk '{print $1}'` + elif [ "`nvm_curl -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" fi if ( @@ -436,10 +435,10 @@ nvm() { if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then echo "npm requires node v0.2.3 or higher" >&2 else - nvm_curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh + nvm_curl https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh fi else - nvm_curl https://npmjs.org/install.sh | clean=yes sh + nvm_curl https://npmjs.org/install.sh -o - | clean=yes sh fi fi else