diff --git a/README.markdown b/README.markdown index d87f3c5..11cb9e9 100644 --- a/README.markdown +++ b/README.markdown @@ -8,17 +8,17 @@ First you'll need to make sure your system has a c++ compiler. For OSX, XCode w To install you could use the [install script][2] using cURL: - curl https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh + curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash or Wget: - wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh + wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`). You can customize the install source, directory and profile using the `NVM_SOURCE`, `NVM_DIR` and `PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm sh` for a global install. -*NB. The installer can use Git, cURL or Wget to download NVM, whatever is available.* +*NB. The installer can use Git, curl, or wget to download NVM, whatever is available.* ### Manual install @@ -163,7 +163,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But nvm install -s 0.8.6 [1]: https://github.com/creationix/nvm.git -[2]: https://github.com/creationix/nvm/blob/v0.8.0/install.sh +[2]: https://github.com/creationix/nvm/blob/v0.10.0/install.sh [3]: https://travis-ci.org/creationix/nvm [Urchin]: https://github.com/scraperwiki/urchin diff --git a/install.sh b/install.sh index 4e266ab..cb3d99d 100755 --- a/install.sh +++ b/install.sh @@ -2,7 +2,7 @@ set -e -has() { +nvm_has() { type "$1" > /dev/null 2>&1 return $? } @@ -11,39 +11,39 @@ if [ -z "$NVM_DIR" ]; then NVM_DIR="$HOME/.nvm" fi -if ! has "curl"; then - if has "wget"; then +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 + wget "$ARGS" } fi fi -install_from_git() { +install_nvm_from_git() { if [ -z "$NVM_SOURCE" ]; then NVM_SOURCE="https://github.com/creationix/nvm.git" fi if [ -d "$NVM_DIR/.git" ]; then echo "=> nvm is already installed in $NVM_DIR, trying to update" - echo -e "\r=> \c" - cd "$NVM_DIR" && git pull 2> /dev/null || { + printf "\r=> " + cd "$NVM_DIR" && (git pull 2> /dev/null || { echo >&2 "Failed to update nvm, run 'git pull' in $NVM_DIR yourself.." - } + }) else # Cloning to $NVM_DIR echo "=> Downloading nvm from git to '$NVM_DIR'" - echo -e "\r=> \c" + printf "\r=> " mkdir -p "$NVM_DIR" git clone "$NVM_SOURCE" "$NVM_DIR" fi } -install_as_script() { +install_nvm_as_script() { if [ -z "$NVM_SOURCE" ]; then NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/master/nvm.sh" fi @@ -63,28 +63,28 @@ install_as_script() { if [ -z "$METHOD" ]; then # Autodetect install method - if has "git"; then - install_from_git - elif has "curl"; then - install_as_script + if nvm_has "git"; then + install_nvm_from_git + elif nvm_has "curl"; then + install_nvm_as_script else - echo >&2 "You need git, curl or wget to install nvm" + echo >&2 "You need git, curl, or wget to install nvm" exit 1 fi else if [ "$METHOD" = "git" ]; then - if ! has "git"; then + if ! nvm_has "git"; then echo >&2 "You need git to install nvm" exit 1 fi - install_from_git + install_nvm_from_git fi if [ "$METHOD" = "script" ]; then - if ! has "curl"; then + if ! nvm_has "curl"; then echo >&2 "You need curl or wget to install nvm" exit 1 fi - install_as_script + install_nvm_as_script fi fi @@ -104,8 +104,8 @@ fi SOURCE_STR="\nexport NVM_DIR=\"$NVM_DIR\"\n[ -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 ~/.bash_profile ~/.zshrc and ~/.profile." + if [ -z "$PROFILE" ]; then + 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" @@ -113,16 +113,15 @@ if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then fi echo " OR" echo "=> Append the following lines to the correct file yourself:" - echo -e "$SOURCE_STR" + printf "%s" "$SOURCE_STR" echo else - if ! grep -qc 'nvm.sh' $PROFILE; then + if ! grep -qc 'nvm.sh' "$PROFILE"; then echo "=> Appending source string to $PROFILE" - echo -e "$SOURCE_STR" >> "$PROFILE" + printf "%s" "$SOURCE_STR" >> "$PROFILE" else echo "=> Source string already in $PROFILE" fi fi echo "=> Close and reopen your terminal to start using nvm" - diff --git a/nvm.sh b/nvm.sh index 6dc4172..0ead214 100644 --- a/nvm.sh +++ b/nvm.sh @@ -274,7 +274,7 @@ nvm() { echo " nvm alias default 0.10.24 Set default node version on a shell" echo echo "Note:" - echo " to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders" + echo " to remove, delete, or uninstall nvm - just remove ~/.nvm, ~/.npm, and ~/.bower folders" echo ;; @@ -572,11 +572,15 @@ nvm() { NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@" ;; "ls" | "list" ) - nvm_print_versions "`nvm_ls $2`" + local NVM_LS_OUTPUT + local NVM_LS_EXIT_CODE + NVM_LS_OUTPUT=$(nvm_ls "$2") + NVM_LS_EXIT_CODE=$? + nvm_print_versions "$NVM_LS_OUTPUT" if [ $# -eq 1 ]; then nvm alias fi - return + return $NVM_LS_EXIT_CODE ;; "ls-remote" | "list-remote" ) nvm_print_versions "`nvm_ls_remote $2`" @@ -651,7 +655,7 @@ nvm() { nvm_version $2 ;; "--version" ) - echo "0.8.0" + echo "0.10.0" ;; "unload" ) unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version > /dev/null 2>&1 diff --git a/package.json b/package.json index 3da7af8..0c95864 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nvm", - "version": "0.8.0", + "version": "0.10.0", "description": "Node Version Manager - Simple bash script to manage multiple active node.js versions", "directories": { "test": "test" diff --git "a/test/fast/Running \"nvm ls foo\" should return a nonzero exit code when not found" "b/test/fast/Running \"nvm ls foo\" should return a nonzero exit code when not found" new file mode 100755 index 0000000..b29a947 --- /dev/null +++ "b/test/fast/Running \"nvm ls foo\" should return a nonzero exit code when not found" @@ -0,0 +1,7 @@ + #!/bin/sh + +. ../../nvm.sh + +nvm ls nonexistent_version +[ "$?" = "3" ] +