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 ]