Merge pull request #1011 from dohse/keep-parameters

[Fix] Do not modify args of sourcing script when parsing `--install`/`--no-use` arg

Fixes #976.
diff --git a/nvm.sh b/nvm.sh
index 1f168d4..71a3c17 100755
--- a/nvm.sh
+++ b/nvm.sh
@@ -2377,7 +2377,8 @@
         nvm_print_npm_version nvm_npm_global_modules \
         nvm_has_system_node nvm_has_system_iojs \
         nvm_download nvm_get_latest nvm_has nvm_get_latest \
-        nvm_supports_source_options nvm_auto nvm_supports_xz > /dev/null 2>&1
+        nvm_supports_source_options nvm_auto nvm_supports_xz \
+        nvm_process_parameters > /dev/null 2>&1
       unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
     ;;
     * )
@@ -2419,17 +2420,22 @@
   fi
 }
 
-NVM_AUTO_MODE='use'
-if nvm_supports_source_options; then
-  while [ $# -ne 0 ]
-  do
-    case "$1" in
-      --install) NVM_AUTO_MODE='install' ;;
-      --no-use) NVM_AUTO_MODE='none' ;;
-    esac
-    shift
-  done
-fi
-nvm_auto "$NVM_AUTO_MODE"
+nvm_process_parameters() {
+  local NVM_AUTO_MODE
+  NVM_AUTO_MODE='use'
+  if nvm_supports_source_options; then
+    while [ $# -ne 0 ]
+    do
+      case "$1" in
+        --install) NVM_AUTO_MODE='install' ;;
+        --no-use) NVM_AUTO_MODE='none' ;;
+      esac
+      shift
+    done
+  fi
+  nvm_auto "$NVM_AUTO_MODE"
+}
+
+nvm_process_parameters "$@"
 
 } # this ensures the entire script is downloaded #
diff --git a/test/fast/Sourcing nvm.sh should not modify parameters of caller b/test/fast/Sourcing nvm.sh should not modify parameters of caller
new file mode 100755
index 0000000..67e88cf
--- /dev/null
+++ b/test/fast/Sourcing nvm.sh should not modify parameters of caller
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -- yes
+. ../../nvm.sh
+[ "$1" = yes ]