Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated installers to be more consistent #339

Closed
wants to merge 7 commits into from
5 changes: 4 additions & 1 deletion README.markdown
Expand Up @@ -14,8 +14,11 @@ or Wget:

wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile` or `~/.profile`).</sub>
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>

You can customize the install source, directory and profile using the `NVM_SOURCE`, `NVM_DIR` and `NVM_PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm sh` for a global install.

<sub>*NB. There is also a [gitless installer](https://github.com/creationix/nvm/blob/master/install-gitless.sh) available, which accepts the same variables as the default installer.*</sub>

### Manual install

Expand Down
44 changes: 22 additions & 22 deletions install-gitless.sh
@@ -1,59 +1,59 @@
#!/bin/bash

function fatalExit (){
echo "$@" && exit 1;
}
set -e

# an alternative URL that could be used: https://github.com/creationix/nvm/tarball/master
if [ "$NVM_SOURCE" == "" ]; then
if [ ! "$NVM_SOURCE" ]; then
NVM_SOURCE="https://raw.github.com/creationix/nvm/master/nvm.sh"
fi

if [ "$NVM_DIR" == "" ]; then
if [ ! "$NVM_DIR" ]; then
NVM_DIR="$HOME/.nvm"
fi

# Downloading to $NVM_DIR
mkdir -p "$NVM_DIR"
pushd "$NVM_DIR" > /dev/null
echo -ne "=> Downloading... "
curl --silent "$NVM_SOURCE" -o nvm.sh || fatalExit "Failed";
echo -e "\r=> Downloading... \c"
curl --silent "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
echo "Failed downloading $NVM_SOURCE" && exit 1
}
echo "Downloaded"
popd > /dev/null

# Detect profile file, .bash_profile has precedence over .profile
if [ ! -z "$1" ]; then
PROFILE="$1"
else
echo

# Detect profile file if not specified as environment variable (eg: PROFILE=~/.myprofile).
if [ ! "$PROFILE" ]; then
if [ -f "$HOME/.bash_profile" ]; then
PROFILE="$HOME/.bash_profile"
elif [ -f "$HOME/.zshrc" ]; then
PROFILE="$HOME/.zshrc"
elif [ -f "$HOME/.profile" ]; then
PROFILE="$HOME/.profile"
fi
fi

SOURCE_STR="[[ -s "$NVM_DIR/nvm.sh" ]] && . "$NVM_DIR/nvm.sh" # This loads NVM"
SOURCE_STR="[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" # This loads NVM"

if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
if [ -z $PROFILE ]; then
echo "=> Profile not found"
echo "=> Profile not found. Tried ~/.bash_profile ~/.zshrc and ~/.profile."
echo "=> Create one of them and run this script again"
else
echo "=> Profile $PROFILE not found"
echo "=> Create it (touch $PROFILE) and run this script again"
fi
echo "=> Append the following line to the correct file yourself"
echo " OR"
echo "=> Append the following line to the correct file yourself:"
echo
echo "\t$SOURCE_STR"
echo " $SOURCE_STR"
echo
echo "=> Close and reopen your terminal to start using NVM"
exit
fi

else
if ! grep -qc 'nvm.sh' $PROFILE; then
echo "=> Appending source string to $PROFILE"
echo "" >> "$PROFILE"
echo $SOURCE_STR >> "$PROFILE"
else
echo "=> Source string already in $PROFILE"
fi
fi

echo "=> Close and reopen your terminal to start using NVM"
44 changes: 23 additions & 21 deletions install.sh
@@ -1,6 +1,14 @@
#!/bin/bash

set -e

if [ ! "$NVM_SOURCE" ]; then
NVM_SOURCE="https://github.com/creationix/nvm.git"
fi

if [ ! "$NVM_DIR" ]; then
NVM_DIR="$HOME/.nvm"
fi

if ! hash git 2>/dev/null; then
echo >&2 "You need to install git - visit http://git-scm.com/downloads"
Expand All @@ -10,19 +18,18 @@ fi

if [ -d "$NVM_DIR" ]; then
echo "=> NVM is already installed in $NVM_DIR, trying to update"
echo -ne "\r=> "
cd $NVM_DIR && git pull
echo -e "\r=> \c"
cd "$NVM_DIR" && git pull
else
# Cloning to $NVM_DIR
git clone https://github.com/creationix/nvm.git $NVM_DIR
mkdir -p "$NVM_DIR"
git clone "$NVM_SOURCE" "$NVM_DIR"
fi

echo

# Detect profile file, .bash_profile has precedence over .profile
if [ ! -z "$1" ]; then
PROFILE="$1"
else
# Detect profile file if not specified as environment variable (eg: PROFILE=~/.myprofile).
if [ ! "$PROFILE" ]; then
if [ -f "$HOME/.bash_profile" ]; then
PROFILE="$HOME/.bash_profile"
elif [ -f "$HOME/.zshrc" ]; then
Expand All @@ -32,34 +39,29 @@ else
fi
fi

SOURCE_STR="[ -s \$HOME/.nvm/nvm.sh ] && . \$HOME/.nvm/nvm.sh # This loads NVM"
SOURCE_STR="[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" # This loads NVM"

if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
if [ -z $PROFILE ]; then
echo "=> Profile not found. Tried $HOME/.bash_profile and $HOME/.profile"
echo "=> Profile not found. Tried ~/.bash_profile ~/.zshrc and ~/.profile."
echo "=> Create one of them and run this script again"
else
echo "=> Profile $PROFILE not found"
echo "=> Create it (touch $PROFILE) and run this script again"
fi
echo "=> Run this script again after running the following:"
echo
echo "\ttouch $HOME/.profile"
echo " OR"
echo "=> Append the following line to the correct file yourself:"
echo
echo "-- OR --"
echo " $SOURCE_STR"
echo
echo "=> Append the following line to the correct file yourself"
echo
echo "\t$SOURCE_STR"
echo
echo "=> Close and reopen your terminal afterwards to start using NVM"
exit
fi

else
if ! grep -qc 'nvm.sh' $PROFILE; then
echo "=> Appending source string to $PROFILE"
echo "" >> "$PROFILE"
echo $SOURCE_STR >> "$PROFILE"
else
echo "=> Source string already in $PROFILE"
fi
fi

echo "=> Close and reopen your terminal to start using NVM"