Merge pull request #957 from matthew-campbell/fix-profile-var
[Fix] `install.sh`: honor PROFILE var. Closes #888. Fixes #830.
commit
1ba8a96ec9
|
@ -115,6 +115,10 @@ install_nvm_as_script() {
|
||||||
# Otherwise, an empty string is returned
|
# Otherwise, an empty string is returned
|
||||||
#
|
#
|
||||||
nvm_detect_profile() {
|
nvm_detect_profile() {
|
||||||
|
if [ -n "$PROFILE" -a -f "$PROFILE" ]; then
|
||||||
|
echo "$PROFILE"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
local DETECTED_PROFILE
|
local DETECTED_PROFILE
|
||||||
DETECTED_PROFILE=''
|
DETECTED_PROFILE=''
|
||||||
|
@ -132,9 +136,7 @@ nvm_detect_profile() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$DETECTED_PROFILE" ]; then
|
if [ -z "$DETECTED_PROFILE" ]; then
|
||||||
if [ -f "$PROFILE" ]; then
|
if [ -f "$HOME/.profile" ]; then
|
||||||
DETECTED_PROFILE="$PROFILE"
|
|
||||||
elif [ -f "$HOME/.profile" ]; then
|
|
||||||
DETECTED_PROFILE="$HOME/.profile"
|
DETECTED_PROFILE="$HOME/.profile"
|
||||||
elif [ -f "$HOME/.bashrc" ]; then
|
elif [ -f "$HOME/.bashrc" ]; then
|
||||||
DETECTED_PROFILE="$HOME/.bashrc"
|
DETECTED_PROFILE="$HOME/.bashrc"
|
||||||
|
|
|
@ -1,101 +1,111 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
cleanup () {
|
|
||||||
unset -f setup cleanup die
|
|
||||||
unset _PROFILE
|
|
||||||
rm -f .bashrc .bash_profile .zshrc .profile test_profile > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
die () { echo $@ ; cleanup ; exit 1; }
|
|
||||||
|
|
||||||
NVM_ENV=testing . ../../install.sh
|
|
||||||
|
|
||||||
setup () {
|
setup () {
|
||||||
touch .bashrc
|
HOME="."
|
||||||
touch .bash_profile
|
NVM_ENV=testing . ../../install.sh
|
||||||
touch .zshrc
|
touch ".bashrc"
|
||||||
touch .profile
|
touch ".bash_profile"
|
||||||
touch test_profile
|
touch ".zshrc"
|
||||||
|
touch ".profile"
|
||||||
|
touch "test_profile"
|
||||||
}
|
}
|
||||||
|
|
||||||
#Let's hack $HOME
|
cleanup () {
|
||||||
HOME="."
|
unset HOME
|
||||||
|
unset NVM_ENV
|
||||||
|
unset NVM_DETECT_PROFILE
|
||||||
|
unset -f setup cleanup die
|
||||||
|
rm -f ".bashrc" ".bash_profile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
|
||||||
|
|
||||||
setup
|
setup
|
||||||
|
|
||||||
#Let's force $SHELL to be bash
|
#
|
||||||
SHELL="/bin/bash"
|
# Confirm profile detection via $SHELL works and that $PROFILE overrides profile detection
|
||||||
|
#
|
||||||
|
|
||||||
# $SHELL is set to bash and .bashrc is there, it must be detected
|
# .bashrc should be detected for bash
|
||||||
_PROFILE=$(nvm_detect_profile)
|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
|
||||||
[ "_$_PROFILE" = "_$HOME/.bashrc" ] || echo "_\$HOME/.bashrc: _$HOME/.bashrc\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
||||||
echo "_\$_PROFILE: _$_PROFILE\n" \
|
die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
|
||||||
die "nvm_detect_profile didn't pick $SHELL and $HOME/.bashrc"
|
fi
|
||||||
|
|
||||||
#Let's force $SHELL to be zsh
|
# $PROFILE should override .bashrc profile detection
|
||||||
SHELL="/usr/bin/zsh"
|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
|
die "nvm_detect_profile ignored \$PROFILE"
|
||||||
|
fi
|
||||||
|
|
||||||
# $SHELL is set to zsh and .zshrc is there, it must be detected
|
# .zshrc should be detected for zsh
|
||||||
_PROFILE=$(nvm_detect_profile)
|
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; unset PROFILE; nvm_detect_profile)"
|
||||||
[ "_$_PROFILE" = "_$HOME/.zshrc" ] || echo "_\$HOME/.zshrc: _$HOME/.zshrc\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
||||||
echo "_\$_PROFILE: _$_PROFILE\n" \
|
die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
|
||||||
die "nvm_detect_profile didn't pick $SHELL and $HOME/.zshrc"
|
fi
|
||||||
|
|
||||||
|
# $PROFILE should override .zshrc profile detection
|
||||||
|
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
|
die "nvm_detect_profile ignored \$PROFILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# if we unset shell it looks for the files
|
#
|
||||||
unset SHELL
|
# Confirm $PROFILE is only returned when it points to a valid file
|
||||||
|
#
|
||||||
|
|
||||||
# $PROFILE points to a valid file, its path must be returned
|
# $PROFILE is a valid file
|
||||||
PROFILE="test_profile"
|
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
_PROFILE=$(nvm_detect_profile)
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
[ "_$_PROFILE" = "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
fi
|
||||||
die "nvm_detect_profile didn't pick \$PROFILE"
|
|
||||||
|
|
||||||
# $PROFILE doesn't point to a valid file, its path must not be returned
|
# $PROFILE is not a valid file
|
||||||
PROFILE="invalid_profile"
|
rm "test_profile"
|
||||||
_PROFILE=$(nvm_detect_profile)
|
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
[ "_$_PROFILE" != "_$PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
|
||||||
die "nvm_detect_profile shouldn't pick \$PROFILE when it's not a valid file"
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
# Below are tests for when $PROFILE is undefined
|
# When profile detection fails via both $PROFILE and $SHELL, profile detection should select based on the existence of
|
||||||
rm test_profile
|
# one of the following files is the following order: .profile, .bashrc, .bash_profile, .zshrc and
|
||||||
unset PROFILE
|
# return an empty value if everything fails
|
||||||
|
#
|
||||||
|
|
||||||
# It should favor .profile if file exists
|
# It should favor .profile if file exists
|
||||||
_PROFILE=$(nvm_detect_profile)
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
[ "_$_PROFILE" = "_$HOME/.profile" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
die "nvm_detect_profile should have selected .profile"
|
||||||
die "nvm_detect_profile should have selected .profile"
|
fi
|
||||||
|
|
||||||
rm .profile
|
|
||||||
# Otherwise, it should favor .bashrc if file exists
|
# Otherwise, it should favor .bashrc if file exists
|
||||||
_PROFILE=$(nvm_detect_profile)
|
rm ".profile"
|
||||||
[ "_$_PROFILE" = "_$HOME/.bashrc" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
||||||
die "nvm_detect_profile should have selected .bashrc"
|
die "nvm_detect_profile should have selected .bashrc"
|
||||||
|
fi
|
||||||
|
|
||||||
rm .bashrc
|
|
||||||
# Otherwise, it should favor .bash_profile if file exists
|
# Otherwise, it should favor .bash_profile if file exists
|
||||||
_PROFILE=$(nvm_detect_profile)
|
rm ".bashrc"
|
||||||
[ "_$_PROFILE" = "_$HOME/.bash_profile" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
|
||||||
die "nvm_detect_profile should have selected .bash_profile"
|
die "nvm_detect_profile should have selected .bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
rm .bash_profile
|
|
||||||
# Otherwise, it should favor .zshrc if file exists
|
# Otherwise, it should favor .zshrc if file exists
|
||||||
_PROFILE=$(nvm_detect_profile)
|
rm ".bash_profile"
|
||||||
[ "_$_PROFILE" = "_$HOME/.zshrc" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
||||||
die "nvm_detect_profile should have selected .zshrc"
|
die "nvm_detect_profile should have selected .zshrc"
|
||||||
|
fi
|
||||||
|
|
||||||
rm .zshrc
|
|
||||||
# It should be empty if none is found
|
# It should be empty if none is found
|
||||||
_PROFILE=$(nvm_detect_profile)
|
rm ".zshrc"
|
||||||
[ -z "$_PROFILE" ] || echo "_\$_PROFILE: _$_PROFILE\n" \
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
echo "_\$PROFILE: _$PROFILE\n" \
|
if [ ! -z "$NVM_DETECT_PROFILE" ]; then
|
||||||
die "nvm_detect_profile should have echo'ed an empty value"
|
die "nvm_detect_profile should have returned an empty value"
|
||||||
|
fi
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|
Loading…
Reference in New Issue