diff --git a/.travis.yml b/.travis.yml index 1b17b9f..510a86e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -language: c # defaults to ruby +language: generic addons: apt_packages: - zsh diff --git a/README.markdown b/README.markdown index 42b1558..3d65739 100644 --- a/README.markdown +++ b/README.markdown @@ -9,9 +9,12 @@ Note: `nvm` does not support Windows (see [#284](https://github.com/creationix/n - [nodist](https://github.com/marcelklehr/nodist) Note: `nvm` does not support [Fish] either (see [#303](https://github.com/creationix/nvm/issues/303)). Alternatives exist, which are neither supported nor developed by us: - - [nvm](https://github.com/derekstavis/plugin-nvm) plugin for [Oh My Fish](https://github.com/oh-my-fish/oh-my-fish), which makes nvm and its completions available in fish shell - [bass](https://github.com/edc/bass) allows to use utilities written for Bash in fish shell - [fast-nvm-fish](https://github.com/brigand/fast-nvm-fish) only works with version numbers (not aliases) but doesn't significantly slow your shell startup + - [fin](https://github.com/fisherman/fin) is a pure fish node version manager for fish shell + - [plugin-nvm](https://github.com/derekstavis/plugin-nvm) plugin for [Oh My Fish](https://github.com/oh-my-fish/oh-my-fish), which makes nvm and its completions available in fish shell + + Note: We still have some problems with FreeBSD, because there is no pre-built binary from official for FreeBSD, and building from source may need [patches](https://www.freshports.org/www/node/files/patch-deps_v8_src_base_platform_platform-posix.cc), see the issue ticket: - [[#900] [Bug] nodejs on FreeBSD need to be patched ](https://github.com/creationix/nvm/issues/900) @@ -26,11 +29,11 @@ Homebrew installation is not supported. To install or update nvm, you can use the [install script][2] using cURL: - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash or Wget: - wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash + wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`). @@ -41,6 +44,14 @@ Eg: `curl ... | NVM_DIR="path/to/nvm" bash` Note: On OSX, if you get `nvm: command not found` after running the install script, your system may not have a [.bash_profile file] where the command is set up. Simple create one with `touch ~/.bash_profile` and run the install script again. +### Verify installation + +To verify that nvm has been installed, do + + command -v nvm + +which should output 'nvm' if the installation was successful. Please note that `which nvm` will not work, since `nvm` is a sourced shell function, not an executable binary. + ### Manual install For manual install create a folder somewhere in your filesystem with the `nvm.sh` file inside it. I put mine in `~/.nvm`. @@ -62,8 +73,8 @@ Add these lines to your `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it For manual upgrade with `git`, change to the `$NVM_DIR`, pull down the latest changes, and check out the latest version: - cd "$NVM_DIR" && git pull origin master && git checkout `git describe --abbrev=0 --tags` - + cd "$NVM_DIR" && git fetch origin && git checkout `git describe --abbrev=0 --tags` + After upgrading, don't forget to activate the new version: . "$NVM_DIR/nvm.sh" @@ -184,13 +195,18 @@ Put this into your `$HOME/.zshrc` to call `nvm use` automatically whenever you e `.nvmrc` file with a string telling nvm which node to `use`: ```zsh +# place this after nvm initialization! autoload -U add-zsh-hook load-nvmrc() { if [[ -f .nvmrc && -r .nvmrc ]]; then nvm use + elif [[ $(nvm version) != $(nvm version default) ]]; then + echo "Reverting to nvm default version" + nvm use default fi } add-zsh-hook chpwd load-nvmrc +load-nvmrc ``` ## License @@ -302,7 +318,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But If setting the `default` alias does not establish the node version in new shells (i.e. `nvm current` yields `system`), ensure that the system's node PATH is set before the `nvm.sh` source line in your shell profile (see [#658](https://github.com/creationix/nvm/issues/658)) [1]: https://github.com/creationix/nvm.git -[2]: https://github.com/creationix/nvm/blob/v0.31.0/install.sh +[2]: https://github.com/creationix/nvm/blob/v0.31.1/install.sh [3]: https://travis-ci.org/creationix/nvm [Urchin]: https://github.com/scraperwiki/urchin [Fish]: http://fishshell.com diff --git a/install.sh b/install.sh index cfb6c29..a1aaa1c 100755 --- a/install.sh +++ b/install.sh @@ -11,7 +11,7 @@ if [ -z "$NVM_DIR" ]; then fi nvm_latest_version() { - echo "v0.31.0" + echo "v0.31.1" } # diff --git a/nvm.sh b/nvm.sh old mode 100755 new mode 100644 index 0e1c9dc..ce5c6b5 --- a/nvm.sh +++ b/nvm.sh @@ -10,6 +10,19 @@ NVM_SCRIPT_SOURCE="$_" +nvm_echo() { + command printf %s\\n "$*" 2>/dev/null || { + nvm_echo() { + \printf %s\\n "$*" # on zsh, `command printf` sometimes fails + } + nvm_echo "$*" + } +} + +nvm_err() { + >&2 nvm_echo "$*" +} + nvm_has() { type "$1" > /dev/null 2>&1 } @@ -19,6 +32,12 @@ nvm_is_alias() { \alias "$1" > /dev/null 2>&1 } +nvm_has_colors() { + local NVM_COLORS + NVM_COLORS="$(tput -T "${TERM:-vt100}" colors)" + [ "${NVM_COLORS:--1}" -ge 8 ] +} + nvm_get_latest() { local NVM_LATEST_URL if nvm_has "curl"; then @@ -26,15 +45,14 @@ nvm_get_latest() { elif nvm_has "wget"; then NVM_LATEST_URL="$(wget http://latest.nvm.sh --server-response -O /dev/null 2>&1 | command awk '/^ Location: /{DEST=$2} END{ print DEST }')" else - >&2 echo 'nvm needs curl or wget to proceed.' + nvm_err 'nvm needs curl or wget to proceed.' return 1 fi - if [ "_$NVM_LATEST_URL" = "_" ]; then - >&2 echo "http://latest.nvm.sh did not redirect to the latest release on Github" + if [ -z "$NVM_LATEST_URL" ]; then + nvm_err "http://latest.nvm.sh did not redirect to the latest release on Github" return 2 - else - echo "$NVM_LATEST_URL" | command awk -F '/' '{print $NF}' fi + nvm_echo "${NVM_LATEST_URL##*/}" } nvm_download() { @@ -42,7 +60,7 @@ nvm_download() { curl -q $* elif nvm_has "wget"; then # Emulate curl with wget - ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \ + ARGS=$(nvm_echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \ -e 's/-L //' \ -e 's/-I /--server-response /' \ -e 's/-s /-q /' \ @@ -60,9 +78,13 @@ nvm_has_system_iojs() { [ "$(nvm deactivate >/dev/null 2>&1 && command -v iojs)" != '' ] } +nvm_is_version_installed() { + [ -n "${1-}" ] && [ -d "$(nvm_version_path "${1-}" 2> /dev/null)" ] +} + nvm_print_npm_version() { if nvm_has "npm"; then - echo " (npm v$(npm --version 2>/dev/null))" + command printf " (npm v$(npm --version 2>/dev/null))" fi } @@ -103,7 +125,7 @@ nvm_tree_contains_path() { node_path="$2" if [ "@$tree@" = "@@" ] || [ "@$node_path@" = "@@" ]; then - >&2 echo "both the tree and the node path are required" + nvm_err "both the tree and the node path are required" return 2 fi @@ -118,11 +140,11 @@ nvm_tree_contains_path() { # Traverse up in directory tree to find containing folder nvm_find_up() { local path - path=$PWD + path="$PWD" while [ "$path" != "" ] && [ ! -f "$path/$1" ]; do path=${path%/*} done - echo "$path" + nvm_echo "$path" } @@ -130,7 +152,7 @@ nvm_find_nvmrc() { local dir dir="$(nvm_find_up '.nvmrc')" if [ -e "$dir/.nvmrc" ]; then - echo "$dir/.nvmrc" + nvm_echo "$dir/.nvmrc" fi } @@ -141,60 +163,73 @@ nvm_rc_version() { NVMRC_PATH="$(nvm_find_nvmrc)" if [ -e "$NVMRC_PATH" ]; then read -r NVM_RC_VERSION < "$NVMRC_PATH" || printf '' - echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>" + nvm_echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>" else - >&2 echo "No .nvmrc file found" + nvm_err "No .nvmrc file found" return 1 fi } nvm_version_greater() { - local LHS - LHS="$(nvm_normalize_version "$1")" - local RHS - RHS="$(nvm_normalize_version "$2")" - [ "$LHS" -gt "$RHS" ]; + command awk 'BEGIN { + if (ARGV[1] == "" || ARGV[2] == "") exit(1) + split(ARGV[1], a, /\./); + split(ARGV[2], b, /\./); + for (i=1; i<=3; i++) { + if (a[i] && a[i] !~ /^[0-9]+$/) exit(2); + if (b[i] && b[i] !~ /^[0-9]+$/) { exit(0); } + if (a[i] < b[i]) exit(3); + else if (a[i] > b[i]) exit(0); + } + exit(4) + }' "${1#v}" "${2#v}"; } nvm_version_greater_than_or_equal_to() { - local LHS - LHS="$(nvm_normalize_version "$1")" - local RHS - RHS="$(nvm_normalize_version "$2")" - [ "$LHS" -ge "$RHS" ]; + command awk 'BEGIN { + if (ARGV[1] == "" || ARGV[2] == "") exit(1) + split(ARGV[1], a, /\./); + split(ARGV[2], b, /\./); + for (i=1; i<=3; i++) { + if (a[i] && a[i] !~ /^[0-9]+$/) exit(2); + if (a[i] < b[i]) exit(3); + else if (a[i] > b[i]) exit(0); + } + exit(0) + }' "${1#v}" "${2#v}"; } nvm_version_dir() { local NVM_WHICH_DIR NVM_WHICH_DIR="$1" if [ -z "$NVM_WHICH_DIR" ] || [ "_$NVM_WHICH_DIR" = "_new" ]; then - echo "$NVM_DIR/versions/node" + nvm_echo "$NVM_DIR/versions/node" elif [ "_$NVM_WHICH_DIR" = "_iojs" ]; then - echo "$NVM_DIR/versions/io.js" + nvm_echo "$NVM_DIR/versions/io.js" elif [ "_$NVM_WHICH_DIR" = "_old" ]; then - echo "$NVM_DIR" + nvm_echo "$NVM_DIR" else - echo "unknown version dir" >&2 + nvm_err 'unknown version dir' return 3 fi } nvm_alias_path() { - echo "$(nvm_version_dir old)/alias" + nvm_echo "$(nvm_version_dir old)/alias" } nvm_version_path() { local VERSION VERSION="$1" if [ -z "$VERSION" ]; then - echo "version is required" >&2 + nvm_err 'version is required' return 3 elif nvm_is_iojs_version "$VERSION"; then - echo "$(nvm_version_dir iojs)/$(nvm_strip_iojs_prefix "$VERSION")" + nvm_echo "$(nvm_version_dir iojs)/$(nvm_strip_iojs_prefix "$VERSION")" elif nvm_version_greater 0.12.0 "$VERSION"; then - echo "$(nvm_version_dir old)/$VERSION" + nvm_echo "$(nvm_version_dir old)/$VERSION" else - echo "$(nvm_version_dir new)/$VERSION" + nvm_echo "$(nvm_version_dir new)/$VERSION" fi } @@ -206,17 +241,14 @@ nvm_ensure_version_installed() { LOCAL_VERSION="$(nvm_version "$PROVIDED_VERSION")" EXIT_CODE="$?" local NVM_VERSION_DIR - if [ "_$EXIT_CODE" = "_0" ]; then - NVM_VERSION_DIR="$(nvm_version_path "$LOCAL_VERSION")" - fi - if [ "_$EXIT_CODE" != "_0" ] || [ ! -d "$NVM_VERSION_DIR" ]; then + if [ "_$EXIT_CODE" != "_0" ] || ! nvm_is_version_installed "$LOCAL_VERSION"; then VERSION="$(nvm_resolve_alias "$PROVIDED_VERSION")" if [ $? -eq 0 ]; then - echo "N/A: version \"$PROVIDED_VERSION -> $VERSION\" is not yet installed" >&2 + nvm_err "N/A: version \"$PROVIDED_VERSION -> $VERSION\" is not yet installed" else local PREFIXED_VERSION PREFIXED_VERSION="$(nvm_ensure_version_prefix "$PROVIDED_VERSION")" - echo "N/A: version \"${PREFIXED_VERSION:-$PROVIDED_VERSION}\" is not yet installed" >&2 + nvm_err "N/A: version \"${PREFIXED_VERSION:-$PROVIDED_VERSION}\" is not yet installed" fi return 1 fi @@ -246,10 +278,10 @@ nvm_version() { esac VERSION="$(nvm_ls "$PATTERN" | command tail -n1)" if [ -z "$VERSION" ] || [ "_$VERSION" = "_N/A" ]; then - echo "N/A" + nvm_echo "N/A" return 3; else - echo "$VERSION" + nvm_echo "$VERSION" fi } @@ -269,7 +301,7 @@ nvm_remote_version() { else VERSION="$(nvm_remote_versions "$PATTERN" | command tail -n1)" fi - echo "$VERSION" + nvm_echo "$VERSION" if [ "_$VERSION" = '_N/A' ]; then return 3 fi @@ -289,19 +321,19 @@ nvm_remote_versions() { ;; *) if nvm_validate_implicit_alias "$PATTERN" 2> /dev/null ; then - echo >&2 "Implicit aliases are not supported in nvm_remote_versions." + nvm_err 'Implicit aliases are not supported in nvm_remote_versions.' return 1 fi - VERSIONS="$(echo "$(nvm_ls_remote "$PATTERN") + VERSIONS="$(nvm_echo "$(nvm_ls_remote "$PATTERN") $(nvm_ls_remote_iojs "$PATTERN")" | command grep -v "N/A" | command sed '/^$/d')" ;; esac if [ -z "$VERSIONS" ]; then - echo "N/A" + nvm_echo 'N/A' return 3 else - echo "$VERSIONS" + nvm_echo "$VERSIONS" fi } @@ -317,13 +349,17 @@ nvm_is_valid_version() { *) local VERSION VERSION="$(nvm_strip_iojs_prefix "$1")" - nvm_version_greater "$VERSION" + nvm_version_greater_than_or_equal_to "$VERSION" 0 ;; esac } nvm_normalize_version() { - echo "${1#v}" | command awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }' + command awk 'BEGIN { + split(ARGV[1], a, /\./); + printf "%d%06d%06d\n", a[1], a[2], a[3]; + exit; + }' "${1#v}" } nvm_ensure_version_prefix() { @@ -332,7 +368,7 @@ nvm_ensure_version_prefix() { if nvm_is_iojs_version "$1"; then nvm_add_iojs_prefix "$NVM_VERSION" else - echo "$NVM_VERSION" + nvm_echo "$NVM_VERSION" fi } @@ -341,10 +377,10 @@ nvm_format_version() { VERSION="$(nvm_ensure_version_prefix "$1")" local NUM_GROUPS NUM_GROUPS="$(nvm_num_version_groups "$VERSION")" - if [ $NUM_GROUPS -lt 3 ]; then + if [ "$NUM_GROUPS" -lt 3 ]; then nvm_format_version "${VERSION%.}.0" else - echo "$VERSION" | cut -f1-3 -d. + nvm_echo "$VERSION" | cut -f1-3 -d. fi } @@ -354,18 +390,22 @@ nvm_num_version_groups() { VERSION="${VERSION#v}" VERSION="${VERSION%.}" if [ -z "$VERSION" ]; then - echo "0" + nvm_echo "0" return fi local NVM_NUM_DOTS - NVM_NUM_DOTS=$(echo "$VERSION" | command sed -e 's/[^\.]//g') + NVM_NUM_DOTS=$(nvm_echo "$VERSION" | command sed -e 's/[^\.]//g') local NVM_NUM_GROUPS NVM_NUM_GROUPS=".$NVM_NUM_DOTS" # add extra dot, since it's (n - 1) dots at this point - echo "${#NVM_NUM_GROUPS}" + nvm_echo "${#NVM_NUM_GROUPS}" } nvm_strip_path() { - echo "$1" | command sed \ + if [ -z "${NVM_DIR-}" ]; then + nvm_err '$NVM_DIR not set!' + return 1 + fi + nvm_echo "$1" | command sed \ -e "s#$NVM_DIR/[^/]*$2[^:]*:##g" \ -e "s#:$NVM_DIR/[^/]*$2[^:]*##g" \ -e "s#$NVM_DIR/[^/]*$2[^:]*##g" \ @@ -376,31 +416,130 @@ nvm_strip_path() { nvm_prepend_path() { if [ -z "$1" ]; then - echo "$2" + nvm_echo "$2" else - echo "$2:$1" + nvm_echo "$2:$1" fi } nvm_binary_available() { # binaries started with node 0.8.6 - local FIRST_VERSION_WITH_BINARY - FIRST_VERSION_WITH_BINARY="0.8.6" - nvm_version_greater_than_or_equal_to "$(nvm_strip_iojs_prefix "$1")" "$FIRST_VERSION_WITH_BINARY" + nvm_version_greater_than_or_equal_to "$(nvm_strip_iojs_prefix "${1-}")" v0.8.6 +} + +nvm_print_formatted_alias() { + local ALIAS + ALIAS="${1-}" + local DEST + DEST="${2-}" + local VERSION + VERSION="${3-}" + if [ -z "$VERSION" ]; then + VERSION="$(nvm_version "$DEST" || return 0)" + fi + local VERSION_FORMAT + local ALIAS_FORMAT + local DEST_FORMAT + ALIAS_FORMAT='%s' + DEST_FORMAT='%s' + VERSION_FORMAT='%s' + local NEWLINE + NEWLINE="\n" + if [ "_$DEFAULT" = '_true' ]; then + NEWLINE=" (default)\n" + fi + local ARROW + ARROW='->' + if nvm_has_colors; then + ARROW='\033[0;90m->\033[0m' + if [ "_$DEFAULT" = '_true' ]; then + NEWLINE=" \033[0;37m(default)\033[0m\n" + fi + if [ "_$VERSION" = "_${NVM_CURRENT-}" ]; then + ALIAS_FORMAT='\033[0;32m%s\033[0m' + DEST_FORMAT='\033[0;32m%s\033[0m' + VERSION_FORMAT='\033[0;32m%s\033[0m' + elif nvm_is_version_installed "$VERSION"; then + ALIAS_FORMAT='\033[0;34m%s\033[0m' + DEST_FORMAT='\033[0;34m%s\033[0m' + VERSION_FORMAT='\033[0;34m%s\033[0m' + elif [ "_$VERSION" = '_∞' ] || [ "_$VERSION" = '_N/A' ]; then + ALIAS_FORMAT='\033[1;31m%s\033[0m' + DEST_FORMAT='\033[1;31m%s\033[0m' + VERSION_FORMAT='\033[1;31m%s\033[0m' + fi + fi + if [ "_$DEST" = "_$VERSION" ]; then + command printf "${ALIAS_FORMAT} ${ARROW} ${VERSION_FORMAT}${NEWLINE}" "$ALIAS" "$DEST" + else + command printf "${ALIAS_FORMAT} ${ARROW} ${DEST_FORMAT} (${ARROW} ${VERSION_FORMAT})${NEWLINE}" "$ALIAS" "$DEST" "$VERSION" + fi +} + +nvm_print_alias_path() { + local NVM_ALIAS_DIR + NVM_ALIAS_DIR="${1-}" + if [ -z "$NVM_ALIAS_DIR" ]; then + nvm_err 'An alias dir is required.' + return 1 + fi + local ALIAS_PATH + ALIAS_PATH="${2-}" + if [ -z "$ALIAS_PATH" ]; then + nvm_err 'An alias path is required.' + return 2 + fi + local ALIAS + ALIAS="${ALIAS_PATH##$NVM_ALIAS_DIR\/}" + local DEST + DEST="$(nvm_alias "$ALIAS" 2> /dev/null || return 0)" + if [ -n "$DEST" ]; then + DEFAULT=false nvm_print_formatted_alias "$ALIAS" "$DEST" + fi +} + +nvm_print_default_alias() { + local ALIAS + ALIAS="${1-}" + if [ -z "$ALIAS" ]; then + nvm_err 'A default alias is required.' + return 1 + fi + local DEST + DEST="$(nvm_print_implicit_alias local "$ALIAS")" + if [ -n "$DEST" ]; then + DEFAULT=true nvm_print_formatted_alias "$ALIAS" "$DEST" + fi +} + +nvm_make_alias() { + local ALIAS + ALIAS="${1-}" + if [ -z "$ALIAS" ]; then + nvm_err "an alias name is required" + return 1 + fi + local VERSION + VERSION="${2-}" + if [ -z "$VERSION" ]; then + nvm_err "an alias target version is required" + return 2 + fi + nvm_echo "$VERSION" | tee "$(nvm_alias_path)/${ALIAS}" >/dev/null } nvm_alias() { local ALIAS - ALIAS="$1" + ALIAS="${1-}" if [ -z "$ALIAS" ]; then - echo >&2 'An alias is required.' + nvm_err 'An alias is required.' return 1 fi local NVM_ALIAS_PATH NVM_ALIAS_PATH="$(nvm_alias_path)/$ALIAS" if [ ! -f "$NVM_ALIAS_PATH" ]; then - echo >&2 'Alias does not exist.' + nvm_err 'Alias does not exist.' return 2 fi @@ -411,19 +550,19 @@ nvm_ls_current() { local NVM_LS_CURRENT_NODE_PATH NVM_LS_CURRENT_NODE_PATH="$(command which node 2> /dev/null)" if [ $? -ne 0 ]; then - echo 'none' + nvm_echo 'none' elif nvm_tree_contains_path "$(nvm_version_dir iojs)" "$NVM_LS_CURRENT_NODE_PATH"; then nvm_add_iojs_prefix "$(iojs --version 2>/dev/null)" elif nvm_tree_contains_path "$NVM_DIR" "$NVM_LS_CURRENT_NODE_PATH"; then local VERSION VERSION="$(node --version 2>/dev/null)" if [ "$VERSION" = "v0.6.21-pre" ]; then - echo "v0.6.21" + nvm_echo 'v0.6.21' else - echo "$VERSION" + nvm_echo "$VERSION" fi else - echo 'system' + nvm_echo 'system' fi } @@ -467,7 +606,7 @@ nvm_resolve_alias() { "_∞" | \ "_$NVM_IOJS_PREFIX" | "_$NVM_IOJS_PREFIX-" | \ "_$NVM_NODE_PREFIX" ) - echo "$ALIAS" + nvm_echo "$ALIAS" ;; *) nvm_ensure_version_prefix "$ALIAS" @@ -502,15 +641,15 @@ nvm_resolve_local_alias() { if [ "_$VERSION" != "_∞" ]; then nvm_version "$VERSION" else - echo "$VERSION" + nvm_echo "$VERSION" fi } nvm_iojs_prefix() { - echo "iojs" + nvm_echo 'iojs' } nvm_node_prefix() { - echo "node" + nvm_echo 'node' } nvm_is_iojs_version() { @@ -519,16 +658,16 @@ nvm_is_iojs_version() { } nvm_add_iojs_prefix() { - command echo "$(nvm_iojs_prefix)-$(nvm_ensure_version_prefix "$(nvm_strip_iojs_prefix "$1")")" + nvm_echo "$(nvm_iojs_prefix)-$(nvm_ensure_version_prefix "$(nvm_strip_iojs_prefix "$1")")" } nvm_strip_iojs_prefix() { local NVM_IOJS_PREFIX NVM_IOJS_PREFIX="$(nvm_iojs_prefix)" if [ "_$1" = "_$NVM_IOJS_PREFIX" ]; then - echo + nvm_echo else - echo "${1#"$NVM_IOJS_PREFIX"-}" + nvm_echo "${1#"$NVM_IOJS_PREFIX"-}" fi } @@ -574,9 +713,9 @@ nvm_ls() { *) NVM_PATTERN_STARTS_WITH_V=false ;; esac if [ $NVM_PATTERN_STARTS_WITH_V = true ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then - if [ -d "$(nvm_version_path "$PATTERN")" ]; then + if nvm_is_version_installed "$PATTERN"; then VERSIONS="$PATTERN" - elif [ -d "$(nvm_version_path "$(nvm_add_iojs_prefix "$PATTERN")")" ]; then + elif nvm_is_version_installed "$(nvm_add_iojs_prefix "$PATTERN")"; then VERSIONS="$(nvm_add_iojs_prefix "$PATTERN")" fi else @@ -594,7 +733,7 @@ nvm_ls() { local ZHS_HAS_SHWORDSPLIT_UNSET ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi @@ -673,11 +812,11 @@ nvm_ls() { fi if [ -z "$VERSIONS" ]; then - echo "N/A" + nvm_echo 'N/A' return 3 fi - echo "$VERSIONS" + nvm_echo "$VERSIONS" } nvm_ls_remote() { @@ -699,7 +838,7 @@ nvm_ls_remote_iojs() { nvm_ls_remote_index_tab() { if [ "$#" -lt 4 ]; then - echo "not enough arguments" >&2 + nvm_err 'not enough arguments' return 5 fi local TYPE @@ -710,11 +849,11 @@ nvm_ls_remote_index_tab() { iojs-std) PREFIX="$(nvm_iojs_prefix)-" ;; node-std) PREFIX='' ;; iojs-*) - echo "unknown type of io.js release" >&2 + nvm_err 'unknown type of io.js release' return 4 ;; node-*) - echo "unknown type of node.js release" >&2 + nvm_err 'unknown type of node.js release' return 4 ;; esac @@ -739,7 +878,7 @@ nvm_ls_remote_index_tab() { fi ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi VERSIONS="$(nvm_download -L -s "$MIRROR/index.tab" -o - \ @@ -753,15 +892,15 @@ nvm_ls_remote_index_tab() { unsetopt shwordsplit fi if [ -z "$VERSIONS" ]; then - echo "N/A" + nvm_echo 'N/A' return 3 fi - echo "$VERSIONS" + nvm_echo "$VERSIONS" } nvm_checksum() { local NVM_CHECKSUM - if [ -z "$3" ] || [ "$3" == "sha1" ]; then + if [ -z "$3" ] || [ "$3" = "sha1" ]; then if nvm_has "sha1sum" && ! nvm_is_alias "sha1sum"; then NVM_CHECKSUM="$(command sha1sum "$1" | command awk '{print $1}')" elif nvm_has "sha1" && ! nvm_is_alias "sha1"; then @@ -769,27 +908,27 @@ nvm_checksum() { elif nvm_has "shasum" && ! nvm_is_alias "shasum"; then NVM_CHECKSUM="$(shasum "$1" | command awk '{print $1}')" else - echo "Unaliased sha1sum, sha1, or shasum not found." >&2 + nvm_err 'Unaliased sha1sum, sha1, or shasum not found.' return 2 fi else if nvm_has "sha256sum" && ! nvm_is_alias "sha256sum"; then - NVM_CHECKSUM="$(sha256sum "$1" | awk '{print $1}')" + NVM_CHECKSUM="$(sha256sum "$1" | command awk '{print $1}')" elif nvm_has "shasum" && ! nvm_is_alias "shasum"; then - NVM_CHECKSUM="$(shasum -a 256 "$1" | awk '{print $1}')" + NVM_CHECKSUM="$(shasum -a 256 "$1" | command awk '{print $1}')" elif nvm_has "sha256" && ! nvm_is_alias "sha256"; then - NVM_CHECKSUM="$(sha256 -q "$1" | awk '{print $1}')" + NVM_CHECKSUM="$(sha256 -q "$1" | command awk '{print $1}')" elif nvm_has "gsha256sum" && ! nvm_is_alias "gsha256sum"; then - NVM_CHECKSUM="$(gsha256sum "$1" | awk '{print $1}')" + NVM_CHECKSUM="$(gsha256sum "$1" | command awk '{print $1}')" elif nvm_has "openssl" && ! nvm_is_alias "openssl"; then - NVM_CHECKSUM="$(openssl dgst -sha256 "$1" | rev | awk '{print $1}' | rev)" + NVM_CHECKSUM="$(openssl dgst -sha256 "$1" | rev | command awk '{print $1}' | rev)" elif nvm_has "libressl" && ! nvm_is_alias "libressl"; then - NVM_CHECKSUM="$(libressl dgst -sha256 "$1" | rev | awk '{print $1}' | rev)" + NVM_CHECKSUM="$(libressl dgst -sha256 "$1" | rev | command awk '{print $1}' | rev)" elif nvm_has "bssl" && ! nvm_is_alias "bssl"; then - NVM_CHECKSUM="$(bssl sha256sum "$1" | awk '{print $1}')" + NVM_CHECKSUM="$(bssl sha256sum "$1" | command awk '{print $1}')" else - echo "Unaliased sha256sum, shasum, sha256, gsha256sum, openssl, libressl, or bssl not found." >&2 - echo "WARNING: Continuing *without checksum verification*" >&2 + nvm_err 'Unaliased sha256sum, shasum, sha256, gsha256sum, openssl, libressl, or bssl not found.' + nvm_err 'WARNING: Continuing *without checksum verification*' return fi fi @@ -797,10 +936,10 @@ nvm_checksum() { if [ "_$NVM_CHECKSUM" = "_$2" ]; then return elif [ -z "$2" ]; then - echo 'Checksums empty' #missing in raspberry pi binary + nvm_echo 'Checksums empty' #missing in raspberry pi binary return else - echo 'Checksums do not match.' >&2 + nvm_err 'Checksums do not match.' return 1 fi } @@ -810,17 +949,30 @@ nvm_print_versions() { local FORMAT local NVM_CURRENT NVM_CURRENT=$(nvm_ls_current) - echo "$1" | while read -r VERSION; do + local NVM_HAS_COLORS + if nvm_has_colors; then + NVM_HAS_COLORS=1 + fi + nvm_echo "$1" | while read -r VERSION; do + FORMAT='%15s' if [ "_$VERSION" = "_$NVM_CURRENT" ]; then - FORMAT='\033[0;32m-> %12s\033[0m' + if [ "${NVM_HAS_COLORS-}" = '1' ]; then + FORMAT='\033[0;32m-> %12s\033[0m' + else + FORMAT='-> %12s *' + fi elif [ "$VERSION" = "system" ]; then - FORMAT='\033[0;33m%15s\033[0m' - elif [ -d "$(nvm_version_path "$VERSION" 2> /dev/null)" ]; then - FORMAT='\033[0;34m%15s\033[0m' - else - FORMAT='%15s' + if [ "${NVM_HAS_COLORS-}" = '1' ]; then + FORMAT='\033[0;33m%15s\033[0m' + fi + elif nvm_is_version_installed "$VERSION"; then + if [ "${NVM_HAS_COLORS-}" = '1' ]; then + FORMAT='\033[0;34m%15s\033[0m' + else + FORMAT='%15s *' + fi fi - command printf "$FORMAT\n" "$VERSION" + command printf -- "$FORMAT\n" "$VERSION" done } @@ -835,7 +987,7 @@ nvm_validate_implicit_alias() { return ;; *) - echo "Only implicit aliases 'stable', 'unstable', '$NVM_IOJS_PREFIX', and '$NVM_NODE_PREFIX' are supported." >&2 + nvm_err "Only implicit aliases 'stable', 'unstable', '$NVM_IOJS_PREFIX', and '$NVM_NODE_PREFIX' are supported." return 1 ;; esac @@ -843,7 +995,7 @@ nvm_validate_implicit_alias() { nvm_print_implicit_alias() { if [ "_$1" != "_local" ] && [ "_$1" != "_remote" ]; then - echo "nvm_print_implicit_alias must be specified with local or remote as the first argument." >&2 + nvm_err "nvm_print_implicit_alias must be specified with local or remote as the first argument." return 1 fi @@ -872,7 +1024,7 @@ nvm_print_implicit_alias() { ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi @@ -881,7 +1033,7 @@ nvm_print_implicit_alias() { NVM_IOJS_VERSION="$($NVM_COMMAND)" EXIT_CODE="$?" if [ "_$EXIT_CODE" = "_0" ]; then - NVM_IOJS_VERSION="$(echo "$NVM_IOJS_VERSION" | sed "s/^$NVM_IMPLICIT-//" | command grep -e '^v' | command cut -c2- | command cut -d . -f 1,2 | uniq | command tail -1)" + NVM_IOJS_VERSION="$(nvm_echo "$NVM_IOJS_VERSION" | command sed "s/^$NVM_IMPLICIT-//" | command grep -e '^v' | command cut -c2- | command cut -d . -f 1,2 | uniq | command tail -1)" fi if [ "$ZHS_HAS_SHWORDSPLIT_UNSET" -eq 1 ] && nvm_has "unsetopt"; then @@ -889,14 +1041,14 @@ nvm_print_implicit_alias() { fi if [ "_$NVM_IOJS_VERSION" = "_N/A" ]; then - echo "N/A" + nvm_echo 'N/A' else $NVM_ADD_PREFIX_COMMAND "$NVM_IOJS_VERSION" fi return $EXIT_CODE ;; "$NVM_NODE_PREFIX") - echo "stable" + nvm_echo 'stable' return ;; *) @@ -907,7 +1059,7 @@ nvm_print_implicit_alias() { ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi @@ -926,7 +1078,7 @@ nvm_print_implicit_alias() { ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi for MINOR in $LAST_TWO; do @@ -947,9 +1099,9 @@ nvm_print_implicit_alias() { fi if [ "_$2" = '_stable' ]; then - echo "${STABLE}" + nvm_echo "${STABLE}" elif [ "_$2" = '_unstable' ]; then - echo "${UNSTABLE}" + nvm_echo "${UNSTABLE}" fi } @@ -963,7 +1115,7 @@ nvm_get_os() { SunOS\ *) NVM_OS=sunos ;; FreeBSD\ *) NVM_OS=freebsd ;; esac - echo "$NVM_OS" + nvm_echo "${NVM_OS-}" } nvm_get_arch() { @@ -992,7 +1144,7 @@ nvm_get_arch() { i*86) NVM_ARCH="x86" ;; *) NVM_ARCH="$HOST_ARCH" ;; esac - echo "$NVM_ARCH" + nvm_echo "${NVM_ARCH}" } nvm_get_minor_version() { @@ -1000,13 +1152,13 @@ nvm_get_minor_version() { VERSION="$1" if [ -z "$VERSION" ]; then - echo 'a version is required' >&2 + nvm_err 'a version is required' return 1 fi case "$VERSION" in v | .* | *..* | v*[!.0123456789]* | [!v]*[!.0123456789]* | [!v0123456789]* | v[!0123456789]*) - echo 'invalid version number' >&2 + nvm_err 'invalid version number' return 2 ;; esac @@ -1015,19 +1167,19 @@ nvm_get_minor_version() { PREFIXED_VERSION="$(nvm_format_version "$VERSION")" local MINOR - MINOR="$(echo "$PREFIXED_VERSION" | command grep -e '^v' | command cut -c2- | command cut -d . -f 1,2)" + MINOR="$(nvm_echo "$PREFIXED_VERSION" | command grep -e '^v' | command cut -c2- | command cut -d . -f 1,2)" if [ -z "$MINOR" ]; then - echo 'invalid version number! (please report this)' >&2 + nvm_err 'invalid version number! (please report this)' return 3 fi - echo "$MINOR" + nvm_echo "${MINOR}" } nvm_ensure_default_set() { local VERSION VERSION="$1" if [ -z "$VERSION" ]; then - echo 'nvm_ensure_default_set: a version is required' >&2 + nvm_err 'nvm_ensure_default_set: a version is required' return 1 fi if nvm_alias default >/dev/null 2>&1; then @@ -1038,7 +1190,7 @@ nvm_ensure_default_set() { OUTPUT="$(nvm alias default "$VERSION")" local EXIT_CODE EXIT_CODE="$?" - echo "Creating default alias: $OUTPUT" + nvm_echo "Creating default alias: $OUTPUT" return $EXIT_CODE } @@ -1053,7 +1205,7 @@ nvm_install_merged_node_binary() { if [ "_$NVM_NODE_TYPE" = "_std" ]; then MIRROR="$NVM_NODEJS_ORG_MIRROR" else - echo "unknown type of node.js release" >&2 + nvm_err 'unknown type of node.js release' return 4 fi local VERSION @@ -1062,7 +1214,7 @@ nvm_install_merged_node_binary() { REINSTALL_PACKAGES_FROM="$3" if ! nvm_is_merged_node_version "$VERSION" || nvm_is_iojs_version "$VERSION"; then - echo 'nvm_install_merged_node_binary requires a node version v4.0 or greater.' >&2 + nvm_err 'nvm_install_merged_node_binary requires a node version v4.0 or greater.' return 10 fi @@ -1094,12 +1246,12 @@ nvm_install_merged_node_binary() { tmptarball="$tmpdir/node-${t}.tar.${compression}" local NVM_INSTALL_ERRORED command mkdir -p "$tmpdir" && \ - echo "Downloading $url..." && \ + nvm_echo "Downloading $url..." && \ nvm_download -L -C - --progress-bar "$url" -o "$tmptarball" || \ NVM_INSTALL_ERRORED=true if grep '404 Not Found' "$tmptarball" >/dev/null; then NVM_INSTALL_ERRORED=true - echo >&2 "HTTP 404 at URL $url"; + nvm_err "HTTP 404 at URL $url"; fi if ( [ "$NVM_INSTALL_ERRORED" != true ] && \ @@ -1111,7 +1263,7 @@ nvm_install_merged_node_binary() { ); then return 0 else - echo >&2 "Binary download failed, trying source." >&2 + nvm_err 'Binary download failed, trying source.' command rm -rf "$tmptarball" "$tmpdir" return 1 fi @@ -1126,7 +1278,7 @@ nvm_install_iojs_binary() { if [ "_$NVM_IOJS_TYPE" = "_std" ]; then MIRROR="$NVM_IOJS_ORG_MIRROR" else - echo "unknown type of io.js release" >&2 + nvm_err 'unknown type of io.js release' return 4 fi local PREFIXED_VERSION @@ -1135,7 +1287,7 @@ nvm_install_iojs_binary() { REINSTALL_PACKAGES_FROM="$3" if ! nvm_is_iojs_version "$PREFIXED_VERSION"; then - echo 'nvm_install_iojs_binary requires an iojs-prefixed version.' >&2 + nvm_err 'nvm_install_iojs_binary requires an iojs-prefixed version.' return 10 fi @@ -1168,12 +1320,12 @@ nvm_install_iojs_binary() { tmptarball="$tmpdir/iojs-${t}.tar.${compression}" local NVM_INSTALL_ERRORED command mkdir -p "$tmpdir" && \ - echo "Downloading $url..." && \ + nvm_echo "Downloading $url..." && \ nvm_download -L -C - --progress-bar "$url" -o "$tmptarball" || \ NVM_INSTALL_ERRORED=true if grep '404 Not Found' "$tmptarball" >/dev/null; then NVM_INSTALL_ERRORED=true - echo >&2 "HTTP 404 at URL $url"; + nvm_err "HTTP 404 at URL $url"; fi if ( [ "$NVM_INSTALL_ERRORED" != true ] && \ @@ -1185,7 +1337,7 @@ nvm_install_iojs_binary() { ); then return 0 else - echo >&2 "Binary download failed, trying source." >&2 + nvm_err 'Binary download failed, trying source.' command rm -rf "$tmptarball" "$tmpdir" return 1 fi @@ -1201,7 +1353,7 @@ nvm_install_node_binary() { REINSTALL_PACKAGES_FROM="$2" if nvm_is_iojs_version "$VERSION"; then - echo 'nvm_install_node_binary does not allow an iojs-prefixed version.' >&2 + nvm_err 'nvm_install_node_binary does not allow an iojs-prefixed version.' return 10 fi @@ -1233,7 +1385,7 @@ nvm_install_node_binary() { NVM_INSTALL_ERRORED=true if grep '404 Not Found' "$tmptarball" >/dev/null; then NVM_INSTALL_ERRORED=true - echo >&2 "HTTP 404 at URL $url"; + nvm_err "HTTP 404 at URL $url"; fi if ( [ "$NVM_INSTALL_ERRORED" != true ] && \ @@ -1245,7 +1397,7 @@ nvm_install_node_binary() { ); then return 0 else - echo >&2 "Binary download failed, trying source." + nvm_err 'Binary download failed, trying source.' command rm -rf "$tmptarball" "$tmpdir" return 1 fi @@ -1257,11 +1409,11 @@ nvm_install_node_binary() { nvm_get_make_jobs() { if nvm_is_natural_num "${1-}"; then NVM_MAKE_JOBS="$1" - echo "number of \`make\` jobs: $NVM_MAKE_JOBS" + nvm_echo "number of \`make\` jobs: $NVM_MAKE_JOBS" return elif [ -n "${1-}" ]; then unset NVM_MAKE_JOBS - echo >&2 "$1 is invalid for number of \`make\` jobs, must be a natural number" + nvm_err "$1 is invalid for number of \`make\` jobs, must be a natural number" fi local NVM_OS NVM_OS="$(nvm_get_os)" @@ -1274,17 +1426,17 @@ nvm_get_make_jobs() { NVM_CPU_THREADS="$(psrinfo | wc -l)" fi if ! nvm_is_natural_num "$NVM_CPU_THREADS" ; then - echo "Can not determine how many thread(s) we can use, set to only 1 now." >&2 - echo "Please report an issue on GitHub to help us make it better and run it faster on your computer!" >&2 + nvm_err 'Can not determine how many thread(s) we can use, set to only 1 now.' + nvm_err 'Please report an issue on GitHub to help us make it better and run it faster on your computer!' NVM_MAKE_JOBS=1 else - echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)" - if [ $NVM_CPU_THREADS -gt 2 ]; then + nvm_echo "Detected that you have $NVM_CPU_THREADS CPU thread(s)" + if [ "$NVM_CPU_THREADS" -gt 2 ]; then NVM_MAKE_JOBS=$(($NVM_CPU_THREADS - 1)) - echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build" + nvm_echo "Set the number of jobs to $NVM_CPU_THREADS - 1 = $NVM_MAKE_JOBS jobs to speed up the build" else NVM_MAKE_JOBS=1 - echo "Number of CPU thread(s) less or equal to 2 will have only one job a time for 'make'" + nvm_echo 'Number of CPU thread(s) less or equal to 2 will have only one job a time for `make`' fi fi } @@ -1304,7 +1456,7 @@ nvm_install_node_source() { fi if [ -n "$ADDITIONAL_PARAMETERS" ]; then - echo "Additional options while compiling: $ADDITIONAL_PARAMETERS" + nvm_echo "Additional options while compiling: $ADDITIONAL_PARAMETERS" fi local VERSION_PATH @@ -1338,24 +1490,24 @@ nvm_install_node_source() { if ( [ -n "$tarball" ] && \ command mkdir -p "$tmpdir" && \ - echo "Downloading $tarball..." && \ + nvm_echo "Downloading $tarball..." && \ nvm_download -L --progress-bar "$tarball" -o "$tmptarball" && \ nvm_checksum "$tmptarball" "$sum" && \ command tar -xzf "$tmptarball" -C "$tmpdir" && \ cd "$tmpdir/node-$VERSION" && \ ./configure --prefix="$VERSION_PATH" $ADDITIONAL_PARAMETERS && \ - $make -j $NVM_MAKE_JOBS ${MAKE_CXX-} && \ + $make -j "$NVM_MAKE_JOBS" ${MAKE_CXX-} && \ command rm -f "$VERSION_PATH" 2>/dev/null && \ - $make -j $NVM_MAKE_JOBS ${MAKE_CXX-} install + $make -j "$NVM_MAKE_JOBS" ${MAKE_CXX-} install ) then if ! nvm_has "npm" ; then - echo "Installing npm..." + nvm_echo 'Installing npm...' if nvm_version_greater 0.2.0 "$VERSION"; then - echo "npm requires node v0.2.3 or higher" >&2 + nvm_err 'npm requires node v0.2.3 or higher' elif nvm_version_greater_than_or_equal_to "$VERSION" 0.2.0; then if nvm_version_greater 0.2.3 "$VERSION"; then - echo "npm requires node v0.2.3 or higher" >&2 + nvm_err 'npm requires node v0.2.3 or higher' else nvm_download -L https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh fi @@ -1364,7 +1516,7 @@ nvm_install_node_source() { fi fi else - echo "nvm: install $VERSION failed!" >&2 + nvm_err "nvm: install $VERSION failed!" return 1 fi @@ -1377,11 +1529,11 @@ nvm_match_version() { local PROVIDED_VERSION PROVIDED_VERSION="$1" case "_$PROVIDED_VERSION" in - "_$NVM_IOJS_PREFIX" | "_io.js") + "_$NVM_IOJS_PREFIX" | '_io.js') nvm_version "$NVM_IOJS_PREFIX" ;; - "_system") - echo "system" + '_system') + nvm_echo 'system' ;; *) nvm_version "$PROVIDED_VERSION" @@ -1400,12 +1552,12 @@ nvm_npm_global_modules() { fi local INSTALLS - INSTALLS=$(echo "$NPMLIST" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*@[^ ]*\).*/\1/' -e '/^npm@[^ ]*.*$/ d' | command xargs) + INSTALLS=$(nvm_echo "$NPMLIST" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*@[^ ]*\).*/\1/' -e '/^npm@[^ ]*.*$/ d' | command xargs) local LINKS - LINKS="$(echo "$NPMLIST" | command sed -n 's/.* -> \(.*\)/\1/ p')" + LINKS="$(nvm_echo "$NPMLIST" | command sed -n 's/.* -> \(.*\)/\1/ p')" - echo "$INSTALLS //// $LINKS" + nvm_echo "$INSTALLS //// $LINKS" } nvm_die_on_prefix() { @@ -1414,28 +1566,28 @@ nvm_die_on_prefix() { case "$NVM_DELETE_PREFIX" in 0|1) ;; *) - echo >&2 'First argument "delete the prefix" must be zero or one' + nvm_err 'First argument "delete the prefix" must be zero or one' return 1 ;; esac local NVM_COMMAND NVM_COMMAND="$2" if [ -z "$NVM_COMMAND" ]; then - echo >&2 'Second argument "nvm command" must be nonempty' + nvm_err 'Second argument "nvm command" must be nonempty' return 2 fi if [ -n "${PREFIX-}" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$PREFIX" >/dev/null 2>&1); then nvm deactivate >/dev/null 2>&1 - echo >&2 "nvm is not compatible with the \"PREFIX\" environment variable: currently set to \"$PREFIX\"" - echo >&2 "Run \`unset PREFIX\` to unset it." + nvm_err "nvm is not compatible with the \"PREFIX\" environment variable: currently set to \"$PREFIX\"" + nvm_err 'Run `unset PREFIX` to unset it.' return 3 fi if [ -n "${NPM_CONFIG_PREFIX-}" ] && ! (nvm_tree_contains_path "$NVM_DIR" "$NPM_CONFIG_PREFIX" >/dev/null 2>&1); then nvm deactivate >/dev/null 2>&1 - echo >&2 "nvm is not compatible with the \"NPM_CONFIG_PREFIX\" environment variable: currently set to \"$NPM_CONFIG_PREFIX\"" - echo >&2 "Run \`unset NPM_CONFIG_PREFIX\` to unset it." + nvm_err "nvm is not compatible with the \"NPM_CONFIG_PREFIX\" environment variable: currently set to \"$NPM_CONFIG_PREFIX\"" + nvm_err 'Run `unset NPM_CONFIG_PREFIX` to unset it.' return 4 fi @@ -1450,11 +1602,11 @@ nvm_die_on_prefix() { NPM_CONFIG_LOGLEVEL=warn npm config delete prefix else nvm deactivate >/dev/null 2>&1 - echo >&2 "nvm is not compatible with the npm config \"prefix\" option: currently set to \"$NVM_NPM_PREFIX\"" + nvm_err "nvm is not compatible with the npm config \"prefix\" option: currently set to \"$NVM_NPM_PREFIX\"" if nvm_has 'npm'; then - echo >&2 "Run \`npm config delete prefix\` or \`$NVM_COMMAND\` to unset it." + nvm_err "Run \`npm config delete prefix\` or \`$NVM_COMMAND\` to unset it." else - echo >&2 "Run \`$NVM_COMMAND\` to unset it." + nvm_err "Run \`$NVM_COMMAND\` to unset it." fi return 10 fi @@ -1515,11 +1667,14 @@ nvm_has_solaris_binary() { nvm_sanitize_path() { local SANITIZED_PATH - SANITIZED_PATH="$1" - if [ "_$1" != "_$NVM_DIR" ]; then - SANITIZED_PATH="$(echo "$SANITIZED_PATH" | command sed "s#$NVM_DIR#\$NVM_DIR#g")" + SANITIZED_PATH="${1-}" + if [ "_$SANITIZED_PATH" != "_$NVM_DIR" ]; then + SANITIZED_PATH="${SANITIZED_PATH/#$NVM_DIR/\$NVM_DIR}" fi - echo "$SANITIZED_PATH" | command sed "s#$HOME#\$HOME#g" + if [ "_$SANITIZED_PATH" != "_$HOME" ]; then + SANITIZED_PATH="${SANITIZED_PATH/#$HOME/\$HOME}" + fi + nvm_echo "$SANITIZED_PATH" } nvm_is_natural_num() { @@ -1530,14 +1685,29 @@ nvm_is_natural_num() { 0) return 1 ;; -*) return 3 ;; # some BSDs return false positives for double-negated args *) - [ $1 -eq $1 2> /dev/null ] # returns 2 if it doesn't match + [ "$1" -eq "$1" ] 2> /dev/null # returns 2 if it doesn't match ;; esac } +# Check version dir permissions +nvm_check_file_permissions() { + for FILE in $1/* $1/.[!.]* $1/..?* ; do + if [ -d "$FILE" ]; then + if ! nvm_check_file_permissions "$FILE"; then + return 2 + fi + elif [ -e "$FILE" ] && [ ! -w "$FILE" ]; then + nvm_err "file is not writable: $(nvm_sanitize_path "$FILE")" + return 1 + fi + done + return 0 +} + nvm() { if [ $# -lt 1 ]; then - nvm help + nvm --help return fi @@ -1547,75 +1717,74 @@ nvm() { # initialize local variables local VERSION local ADDITIONAL_PARAMETERS - local ALIAS case $1 in - "help" ) + 'help' | '--help' ) local NVM_IOJS_PREFIX NVM_IOJS_PREFIX="$(nvm_iojs_prefix)" local NVM_NODE_PREFIX NVM_NODE_PREFIX="$(nvm_node_prefix)" - echo - echo "Node Version Manager" - echo - echo 'Note: refers to any version-like string nvm understands. This includes:' - echo ' - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)' - echo " - default (built-in) aliases: $NVM_NODE_PREFIX, stable, unstable, $NVM_IOJS_PREFIX, system" - echo ' - custom aliases you define with `nvm alias foo`' - echo - echo 'Usage:' - echo ' nvm help Show this message' - echo ' nvm --version Print out the latest released version of nvm' - echo ' nvm install [-s] Download and install a , [-s] from source. Uses .nvmrc if available' - echo ' --reinstall-packages-from= When installing, reinstall packages installed in ' - echo ' nvm uninstall Uninstall a version' - echo ' nvm use [--silent] Modify PATH to use . Uses .nvmrc if available' - echo ' nvm exec [--silent] [] Run on . Uses .nvmrc if available' - echo ' nvm run [--silent] [] Run `node` on with as arguments. Uses .nvmrc if available' - echo ' nvm current Display currently activated version' - echo ' nvm ls List installed versions' - echo ' nvm ls List versions matching a given description' - echo ' nvm ls-remote List remote versions available for install' - echo ' nvm version Resolve the given description to a single local version' - echo ' nvm version-remote Resolve the given description to a single remote version' - echo ' nvm deactivate Undo effects of `nvm` on current shell' - echo ' nvm alias [] Show all aliases beginning with ' - echo ' nvm alias Set an alias named pointing to ' - echo ' nvm unalias Deletes the alias named ' - echo ' nvm reinstall-packages Reinstall global `npm` packages contained in to current version' - echo ' nvm unload Unload `nvm` from shell' - echo ' nvm which [] Display path to installed node version. Uses .nvmrc if available' - echo - echo 'Example:' - echo ' nvm install v0.10.32 Install a specific version number' - echo ' nvm use 0.10 Use the latest available 0.10.x release' - echo ' nvm run 0.10.32 app.js Run app.js using node v0.10.32' - echo ' nvm exec 0.10.32 node app.js Run `node app.js` with the PATH pointing to node v0.10.32' - echo ' nvm alias default 0.10.32 Set default node version on a shell' - echo - echo 'Note:' - echo ' to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)' - echo + nvm_echo + nvm_echo "Node Version Manager" + nvm_echo + nvm_echo 'Note: refers to any version-like string nvm understands. This includes:' + nvm_echo ' - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)' + nvm_echo " - default (built-in) aliases: $NVM_NODE_PREFIX, stable, unstable, $NVM_IOJS_PREFIX, system" + nvm_echo ' - custom aliases you define with `nvm alias foo`' + nvm_echo + nvm_echo 'Usage:' + nvm_echo ' nvm --help Show this message' + nvm_echo ' nvm --version Print out the latest released version of nvm' + nvm_echo ' nvm install [-s] Download and install a , [-s] from source. Uses .nvmrc if available' + nvm_echo ' --reinstall-packages-from= When installing, reinstall packages installed in ' + nvm_echo ' nvm uninstall Uninstall a version' + nvm_echo ' nvm use [--silent] Modify PATH to use . Uses .nvmrc if available' + nvm_echo ' nvm exec [--silent] [] Run on . Uses .nvmrc if available' + nvm_echo ' nvm run [--silent] [] Run `node` on with as arguments. Uses .nvmrc if available' + nvm_echo ' nvm current Display currently activated version' + nvm_echo ' nvm ls List installed versions' + nvm_echo ' nvm ls List versions matching a given description' + nvm_echo ' nvm ls-remote List remote versions available for install' + nvm_echo ' nvm version Resolve the given description to a single local version' + nvm_echo ' nvm version-remote Resolve the given description to a single remote version' + nvm_echo ' nvm deactivate Undo effects of `nvm` on current shell' + nvm_echo ' nvm alias [] Show all aliases beginning with ' + nvm_echo ' nvm alias Set an alias named pointing to ' + nvm_echo ' nvm unalias Deletes the alias named ' + nvm_echo ' nvm reinstall-packages Reinstall global `npm` packages contained in to current version' + nvm_echo ' nvm unload Unload `nvm` from shell' + nvm_echo ' nvm which [] Display path to installed node version. Uses .nvmrc if available' + nvm_echo + nvm_echo 'Example:' + nvm_echo ' nvm install v0.10.32 Install a specific version number' + nvm_echo ' nvm use 0.10 Use the latest available 0.10.x release' + nvm_echo ' nvm run 0.10.32 app.js Run app.js using node v0.10.32' + nvm_echo ' nvm exec 0.10.32 node app.js Run `node app.js` with the PATH pointing to node v0.10.32' + nvm_echo ' nvm alias default 0.10.32 Set default node version on a shell' + nvm_echo + nvm_echo 'Note:' + nvm_echo ' to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)' + nvm_echo ;; "debug" ) local ZHS_HAS_SHWORDSPLIT_UNSET ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi - echo >&2 "nvm --version: v$(nvm --version)" - echo >&2 "\$SHELL: $SHELL" - echo >&2 "\$HOME: $HOME" - echo >&2 "\$NVM_DIR: '$(nvm_sanitize_path "$NVM_DIR")'" - echo >&2 "\$PREFIX: '$(nvm_sanitize_path "$PREFIX")'" - echo >&2 "\$NPM_CONFIG_PREFIX: '$(nvm_sanitize_path "$NPM_CONFIG_PREFIX")'" + nvm_err "nvm --version: v$(nvm --version)" + nvm_err "\$SHELL: $SHELL" + nvm_err "\$HOME: $HOME" + nvm_err "\$NVM_DIR: '$(nvm_sanitize_path "$NVM_DIR")'" + nvm_err "\$PREFIX: '$(nvm_sanitize_path "$PREFIX")'" + nvm_err "\$NPM_CONFIG_PREFIX: '$(nvm_sanitize_path "$NPM_CONFIG_PREFIX")'" local NVM_DEBUG_OUTPUT for NVM_DEBUG_COMMAND in 'nvm current' 'which node' 'which iojs' 'which npm' 'npm config get prefix' 'npm root -g' do NVM_DEBUG_OUTPUT="$($NVM_DEBUG_COMMAND 2>&1)" - echo >&2 "$NVM_DEBUG_COMMAND: $(nvm_sanitize_path "$NVM_DEBUG_OUTPUT")" + nvm_err "$NVM_DEBUG_COMMAND: $(nvm_sanitize_path "$NVM_DEBUG_OUTPUT")" done if [ "$ZHS_HAS_SHWORDSPLIT_UNSET" -eq 1 ] && nvm_has "unsetopt"; then unsetopt shwordsplit @@ -1630,7 +1799,7 @@ nvm() { NVM_OS="$(nvm_get_os)" if ! nvm_has "curl" && ! nvm_has "wget"; then - echo 'nvm needs curl or wget to proceed.' >&2; + nvm_err 'nvm needs curl or wget to proceed.' return 1 fi @@ -1638,7 +1807,7 @@ nvm() { version_not_provided=1 nvm_rc_version if [ -z "$NVM_RC_VERSION" ]; then - >&2 nvm help + >&2 nvm --help return 127 fi fi @@ -1647,7 +1816,6 @@ nvm() { local nobinary nobinary=0 - local make_jobs while [ $# -ne 0 ] do case "$1" in @@ -1681,7 +1849,7 @@ nvm() { VERSION="$(nvm_remote_version "$provided_version")" if [ "_$VERSION" = "_N/A" ]; then - echo "Version '$provided_version' not found - try \`nvm ls-remote\` to browse available versions." >&2 + nvm_err "Version '$provided_version' not found - try \`nvm ls-remote\` to browse available versions." return 3 fi @@ -1693,12 +1861,12 @@ nvm() { do case "$1" in --reinstall-packages-from=*) - PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 27-)" - REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")" + PROVIDED_REINSTALL_PACKAGES_FROM="$(nvm_echo "$1" | command cut -c 27-)" + REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM" || return 0)" ;; --copy-packages-from=*) - PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 22-)" - REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")" + PROVIDED_REINSTALL_PACKAGES_FROM="$(nvm_echo "$1" | command cut -c 22-)" + REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM" || return 0)" ;; *) ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1" @@ -1708,10 +1876,10 @@ nvm() { done if [ "_$(nvm_ensure_version_prefix "$PROVIDED_REINSTALL_PACKAGES_FROM")" = "_$VERSION" ]; then - echo "You can't reinstall global packages from the same version of node you're installing." >&2 + nvm_err "You can't reinstall global packages from the same version of node you're installing." return 4 elif [ ! -z "$PROVIDED_REINSTALL_PACKAGES_FROM" ] && [ "_$REINSTALL_PACKAGES_FROM" = "_N/A" ]; then - echo "If --reinstall-packages-from is provided, it must point to an installed version of node." >&2 + nvm_err "If --reinstall-packages-from is provided, it must point to an installed version of node." return 5 fi @@ -1723,10 +1891,8 @@ nvm() { NVM_NODE_MERGED=true fi - local VERSION_PATH - VERSION_PATH="$(nvm_version_path "$VERSION")" - if [ -d "$VERSION_PATH" ]; then - echo "$VERSION is already installed." >&2 + if nvm_is_version_installed "$VERSION"; then + nvm_err "$VERSION is already installed." if nvm use "$VERSION" && [ ! -z "$REINSTALL_PACKAGES_FROM" ] && [ "_$REINSTALL_PACKAGES_FROM" != "_N/A" ]; then nvm reinstall-packages "$REINSTALL_PACKAGES_FROM" fi @@ -1737,12 +1903,12 @@ nvm() { if [ "_$NVM_OS" = "_freebsd" ]; then # node.js and io.js do not have a FreeBSD binary nobinary=1 - echo "Currently, there is no binary for $NVM_OS" >&2 + nvm_err "Currently, there is no binary for $NVM_OS" elif [ "_$NVM_OS" = "_sunos" ]; then # Not all node/io.js versions have a Solaris binary if ! nvm_has_solaris_binary "$VERSION"; then nobinary=1 - echo "Currently, there is no binary of version $VERSION for $NVM_OS" >&2 + nvm_err "Currently, there is no binary of version $VERSION for $NVM_OS" fi fi local NVM_INSTALL_SUCCESS @@ -1766,11 +1932,11 @@ nvm() { fi elif [ "$NVM_IOJS" = true ]; then # nvm_install_iojs_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS" - echo "Installing iojs from source is not currently supported" >&2 + nvm_err 'Installing iojs from source is not currently supported' return 105 elif [ "$NVM_NODE_MERGED" = true ]; then # nvm_install_merged_node_source "$VERSION" "$NVM_MAKE_JOBS" "$ADDITIONAL_PARAMETERS" - echo "Installing node v1.0 and greater from source is not currently supported" >&2 + nvm_err 'Installing node v1.0 and greater from source is not currently supported' return 106 fi fi @@ -1786,7 +1952,7 @@ nvm() { ;; "uninstall" ) if [ $# -ne 2 ]; then - >&2 nvm help + >&2 nvm --help return 127 fi @@ -1803,17 +1969,15 @@ nvm() { esac if [ "_$VERSION" = "_$(nvm_ls_current)" ]; then if nvm_is_iojs_version "$VERSION"; then - echo "nvm: Cannot uninstall currently-active io.js version, $VERSION (inferred from $PATTERN)." >&2 + nvm_err "nvm: Cannot uninstall currently-active io.js version, $VERSION (inferred from $PATTERN)." else - echo "nvm: Cannot uninstall currently-active node version, $VERSION (inferred from $PATTERN)." >&2 + nvm_err "nvm: Cannot uninstall currently-active node version, $VERSION (inferred from $PATTERN)." fi return 1 fi - local VERSION_PATH - VERSION_PATH="$(nvm_version_path "$VERSION")" - if [ ! -d "$VERSION_PATH" ]; then - echo "$VERSION version is not installed..." >&2 + if ! nvm_is_version_installed "$VERSION"; then + nvm_err "$VERSION version is not installed..." return; fi @@ -1828,13 +1992,25 @@ nvm() { NVM_PREFIX="$(nvm_node_prefix)" NVM_SUCCESS_MSG="Uninstalled node $VERSION" fi + + local VERSION_PATH + VERSION_PATH="$(nvm_version_path "$VERSION")" + if ! nvm_check_file_permissions "$VERSION_PATH"; then + nvm_err 'Cannot uninstall, incorrect permissions on installation folder.' + nvm_err 'This is usually caused by running `npm install -g` as root. Run the following commands as root to fix the permissions and then try again.' + nvm_err + nvm_err " chown -R $(whoami) \"$(nvm_sanitize_path "$VERSION_PATH")\"" + nvm_err " chmod -R u+w \"$(nvm_sanitize_path "$VERSION_PATH")\"" + return 1 + fi + # Delete all files related to target version. command rm -rf "$NVM_DIR/src/$NVM_PREFIX-$VERSION" \ "$NVM_DIR/src/$NVM_PREFIX-$VERSION.tar.*" \ "$NVM_DIR/bin/$NVM_PREFIX-${t}" \ "$NVM_DIR/bin/$NVM_PREFIX-${t}.tar.*" \ "$VERSION_PATH" 2>/dev/null - echo "$NVM_SUCCESS_MSG" + nvm_echo "$NVM_SUCCESS_MSG" # rm any aliases that point to uninstalled version. for ALIAS in $(command grep -l "$VERSION" "$(nvm_alias_path)/*" 2>/dev/null) @@ -1846,20 +2022,20 @@ nvm() { local NEWPATH NEWPATH="$(nvm_strip_path "$PATH" "/bin")" if [ "_$PATH" = "_$NEWPATH" ]; then - echo "Could not find $NVM_DIR/*/bin in \$PATH" >&2 + nvm_err "Could not find $NVM_DIR/*/bin in \$PATH" else export PATH="$NEWPATH" hash -r - echo "$NVM_DIR/*/bin removed from \$PATH" + nvm_echo "$NVM_DIR/*/bin removed from \$PATH" fi if [ -n "${MANPATH-}" ]; then NEWPATH="$(nvm_strip_path "$MANPATH" "/share/man")" if [ "_$MANPATH" = "_$NEWPATH" ]; then - echo "Could not find $NVM_DIR/*/share/man in \$MANPATH" >&2 + nvm_err "Could not find $NVM_DIR/*/share/man in \$MANPATH" else export MANPATH="$NEWPATH" - echo "$NVM_DIR/*/share/man removed from \$MANPATH" + nvm_echo "$NVM_DIR/*/share/man removed from \$MANPATH" fi fi @@ -1867,7 +2043,7 @@ nvm() { NEWPATH="$(nvm_strip_path "$NODE_PATH" "/lib/node_modules")" if [ "_$NODE_PATH" != "_$NEWPATH" ]; then export NODE_PATH="$NEWPATH" - echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH" + nvm_echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH" fi fi unset NVM_BIN NVM_PATH @@ -1905,30 +2081,30 @@ nvm() { fi if [ -z "$VERSION" ]; then - >&2 nvm help + >&2 nvm --help return 127 fi if [ "_$VERSION" = '_system' ]; then if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then if [ $NVM_USE_SILENT -ne 1 ]; then - echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)" + nvm_echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)" fi return elif nvm_has_system_iojs && nvm deactivate >/dev/null 2>&1; then if [ $NVM_USE_SILENT -ne 1 ]; then - echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)" + nvm_echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)" fi return else if [ $NVM_USE_SILENT -ne 1 ]; then - echo "System version of node not found." >&2 + nvm_err 'System version of node not found.' fi return 127 fi elif [ "_$VERSION" = "_∞" ]; then if [ $NVM_USE_SILENT -ne 1 ]; then - echo "The alias \"$PROVIDED_VERSION\" leads to an infinite loop. Aborting." >&2 + nvm_err "The alias \"$PROVIDED_VERSION\" leads to an infinite loop. Aborting." fi return 8 fi @@ -1987,7 +2163,7 @@ nvm() { fi fi if [ -n "$NVM_USE_OUTPUT" ]; then - echo "$NVM_USE_OUTPUT" + nvm_echo "$NVM_USE_OUTPUT" fi ;; "run" ) @@ -1998,42 +2174,50 @@ nvm() { shift local NVM_SILENT - NVM_SILENT=0 - if [ "_$1" = "_--silent" ]; then - NVM_SILENT=1 - shift - fi + while [ $# -gt 0 ] + do + case "$1" in + --silent) NVM_SILENT='--silent' ; shift ;; + *) + if [ -n "$1" ]; then + break + else + shift + fi + ;; # stop processing arguments + esac + done if [ $# -lt 1 ]; then - if [ "$NVM_SILENT" -eq 1 ]; then + if [ -n "${NVM_SILENT-}" ]; then nvm_rc_version >/dev/null 2>&1 && has_checked_nvmrc=1 else nvm_rc_version && has_checked_nvmrc=1 fi if [ -n "$NVM_RC_VERSION" ]; then - VERSION="$(nvm_version "$NVM_RC_VERSION")" + VERSION="$(nvm_version "$NVM_RC_VERSION" || return 0)" else VERSION='N/A' fi if [ $VERSION = "N/A" ]; then - >&2 nvm help + >&2 nvm --help return 127 fi fi provided_version="$1" if [ -n "$provided_version" ]; then - VERSION="$(nvm_version "$provided_version")" + VERSION="$(nvm_version "$provided_version" || return 0)" if [ "_$VERSION" = "_N/A" ] && ! nvm_is_valid_version "$provided_version"; then provided_version='' if [ $has_checked_nvmrc -ne 1 ]; then - if [ "$NVM_SILENT" -eq 1 ]; then + if [ -n "${NVM_SILENT-}" ]; then nvm_rc_version >/dev/null 2>&1 && has_checked_nvmrc=1 else nvm_rc_version && has_checked_nvmrc=1 fi fi - VERSION="$(nvm_version "$NVM_RC_VERSION")" + VERSION="$(nvm_version "$NVM_RC_VERSION" || return 0)" else shift fi @@ -2046,64 +2230,62 @@ nvm() { local ARGS ARGS="$@" - local OUTPUT local EXIT_CODE local ZHS_HAS_SHWORDSPLIT_UNSET ZHS_HAS_SHWORDSPLIT_UNSET=1 if nvm_has "setopt"; then - ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; echo $?) + ZHS_HAS_SHWORDSPLIT_UNSET=$(setopt | command grep shwordsplit > /dev/null ; nvm_echo $?) setopt shwordsplit fi if [ "_$VERSION" = "_N/A" ]; then nvm_ensure_version_installed "$provided_version" - EXIT_CODE=$? - elif [ -z "$ARGS" ]; then - if [ "$NVM_IOJS" = true ]; then - nvm exec "$VERSION" iojs - else - nvm exec "$VERSION" node - fi - EXIT_CODE="$?" elif [ "$NVM_IOJS" = true ]; then - [ $NVM_SILENT -eq 1 ] || echo "Running io.js $(nvm_strip_iojs_prefix "$VERSION")$(nvm use --silent "$VERSION" && nvm_print_npm_version)" - OUTPUT="$(nvm use "$VERSION" >/dev/null && iojs $ARGS)" - EXIT_CODE="$?" + nvm exec "${NVM_SILENT-}" "$VERSION" iojs $ARGS else - [ $NVM_SILENT -eq 1 ] || echo "Running node $VERSION$(nvm use --silent "$VERSION" && nvm_print_npm_version)" - OUTPUT="$(nvm use "$VERSION" >/dev/null && node $ARGS)" - EXIT_CODE="$?" + nvm exec "${NVM_SILENT-}" "$VERSION" node $ARGS fi + EXIT_CODE="$?" if [ "$ZHS_HAS_SHWORDSPLIT_UNSET" -eq 1 ] && nvm_has "unsetopt"; then unsetopt shwordsplit fi - if [ -n "$OUTPUT" ]; then - echo "$OUTPUT" - fi return $EXIT_CODE ;; "exec" ) shift local NVM_SILENT - NVM_SILENT=0 - if [ "_$1" = "_--silent" ]; then - NVM_SILENT=1 - shift - fi + while [ $# -gt 0 ] + do + case "$1" in + --silent) NVM_SILENT='--silent' ; shift ;; + --) break ;; + --*) + nvm_err "Unsupported option \"$1\"." + return 55 + ;; + *) + if [ -n "$1" ]; then + break + else + shift + fi + ;; # stop processing arguments + esac + done local provided_version provided_version="$1" if [ -n "$provided_version" ]; then - VERSION="$(nvm_version "$provided_version")" + VERSION="$(nvm_version "$provided_version" || return 0)" if [ "_$VERSION" = "_N/A" ] && ! nvm_is_valid_version "$provided_version"; then - if [ "$NVM_SILENT" -eq 1 ]; then + if [ -n "${NVM_SILENT-}" ]; then nvm_rc_version >/dev/null 2>&1 else nvm_rc_version fi provided_version="$NVM_RC_VERSION" - VERSION="$(nvm_version "$provided_version")" + VERSION="$(nvm_version "$provided_version" || return 0)" else shift fi @@ -2115,7 +2297,13 @@ nvm() { return $EXIT_CODE fi - [ $NVM_SILENT -eq 1 ] || echo "Running node $VERSION$(nvm use --silent "$VERSION" && nvm_print_npm_version)" + if [ -z "${NVM_SILENT-}" ]; then + if nvm_is_iojs_version "$VERSION"; then + nvm_echo "Running io.js $(nvm_strip_iojs_prefix "$VERSION")$(nvm use --silent "$VERSION" && nvm_print_npm_version)" + else + nvm_echo "Running node $VERSION$(nvm use --silent "$VERSION" && nvm_print_npm_version)" + fi + fi NODE_VERSION="$VERSION" "$NVM_DIR/nvm-exec" "$@" ;; "ls" | "list" ) @@ -2169,7 +2357,7 @@ nvm() { fi local NVM_OUTPUT - NVM_OUTPUT="$(echo "$NVM_LS_REMOTE_PRE_MERGED_OUTPUT + NVM_OUTPUT="$(nvm_echo "$NVM_LS_REMOTE_PRE_MERGED_OUTPUT $NVM_LS_REMOTE_IOJS_OUTPUT $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d')" if [ -n "$NVM_OUTPUT" ]; then @@ -2190,15 +2378,15 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' nvm_rc_version if [ -n "$NVM_RC_VERSION" ]; then provided_version="$NVM_RC_VERSION" - VERSION=$(nvm_version "$NVM_RC_VERSION") + VERSION=$(nvm_version "$NVM_RC_VERSION" || return 0) fi elif [ "_$2" != '_system' ]; then - VERSION="$(nvm_version "$provided_version")" + VERSION="$(nvm_version "$provided_version" || return 0)" else VERSION="$2" fi if [ -z "$VERSION" ]; then - >&2 nvm help + >&2 nvm --help return 127 fi @@ -2207,17 +2395,17 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' local NVM_BIN NVM_BIN="$(nvm use system >/dev/null 2>&1 && command which node)" if [ -n "$NVM_BIN" ]; then - echo "$NVM_BIN" + nvm_echo "$NVM_BIN" return else return 1 fi else - echo "System version of node not found." >&2 + nvm_err 'System version of node not found.' return 127 fi elif [ "_$VERSION" = "_∞" ]; then - echo "The alias \"$2\" leads to an infinite loop. Aborting." >&2 + nvm_err "The alias \"$2\" leads to an infinite loop. Aborting." return 8 fi @@ -2228,97 +2416,84 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' fi local NVM_VERSION_DIR NVM_VERSION_DIR="$(nvm_version_path "$VERSION")" - echo "$NVM_VERSION_DIR/bin/node" + nvm_echo "$NVM_VERSION_DIR/bin/node" ;; "alias" ) local NVM_ALIAS_DIR NVM_ALIAS_DIR="$(nvm_alias_path)" command mkdir -p "$NVM_ALIAS_DIR" + local NVM_CURRENT + NVM_CURRENT="$(nvm_ls_current)" if [ $# -le 2 ]; then - local DEST - for ALIAS_PATH in "$NVM_ALIAS_DIR"/"${2-}"*; do - ALIAS="$(command basename "$ALIAS_PATH")" - DEST="$(nvm_alias "$ALIAS" 2> /dev/null)" - if [ -n "$DEST" ]; then - VERSION="$(nvm_version "$DEST")" - if [ "_$DEST" = "_$VERSION" ]; then - echo "$ALIAS -> $DEST" - else - echo "$ALIAS -> $DEST (-> $VERSION)" - fi - fi + local ALIAS_PATH + for ALIAS_PATH in "$NVM_ALIAS_DIR/${2-}"*; do + NVM_CURRENT="${NVM_CURRENT}" nvm_print_alias_path "$NVM_ALIAS_DIR" "$ALIAS_PATH" done + local ALIAS for ALIAS in "$(nvm_node_prefix)" "stable" "unstable" "$(nvm_iojs_prefix)"; do - if [ ! -f "$NVM_ALIAS_DIR/$ALIAS" ]; then - if [ $# -lt 2 ] || [ "~$ALIAS" = "~$2" ]; then - DEST="$(nvm_print_implicit_alias local "$ALIAS")" - if [ "_$DEST" != "_" ]; then - VERSION="$(nvm_version "$DEST")" - if [ "_$DEST" = "_$VERSION" ]; then - echo "$ALIAS -> $DEST (default)" - else - echo "$ALIAS -> $DEST (-> $VERSION) (default)" - fi - fi - fi + if [ ! -f "$NVM_ALIAS_DIR/$ALIAS" ] && ([ $# -lt 2 ] || [ "~$ALIAS" = "~${2-}" ]); then + NVM_CURRENT="${NVM_CURRENT}" nvm_print_default_alias "$ALIAS" fi done return fi if [ -z "${3-}" ]; then - command rm -f "$NVM_ALIAS_DIR/$2" - echo "$2 -> *poof*" - return + nvm unalias "${2-}" + return $? fi - VERSION="$(nvm_version "$3")" - if [ $? -ne 0 ]; then - echo "! WARNING: Version '$3' does not exist." >&2 + if [ "${2#*\/}" != "${2-}" ]; then + nvm_err 'Aliases in subdirectories are not supported.' + return 1 fi - echo "$3" | tee "$NVM_ALIAS_DIR/$2" >/dev/null - if [ ! "_$3" = "_$VERSION" ]; then - echo "$2 -> $3 (-> $VERSION)" - else - echo "$2 -> $3" + VERSION="$(nvm_version "${3-}" || return 0)" + if [ "$VERSION" = 'N/A' ]; then + nvm_err "! WARNING: Version '${3-}' does not exist." fi + nvm_make_alias "${2-}" "${3-}" + NVM_CURRENT="${NVM_CURRENT-}" DEFAULT=false nvm_print_formatted_alias "${2-}" "${3-}" "$VERSION" ;; "unalias" ) local NVM_ALIAS_DIR NVM_ALIAS_DIR="$(nvm_alias_path)" command mkdir -p "$NVM_ALIAS_DIR" if [ $# -ne 2 ]; then - >&2 nvm help + >&2 nvm --help return 127 fi - [ ! -f "$NVM_ALIAS_DIR/$2" ] && echo "Alias $2 doesn't exist!" >&2 && return + if [ "${2#*\/}" != "${2-}" ]; then + nvm_err 'Aliases in subdirectories are not supported.' + return 1 + fi + [ ! -f "$NVM_ALIAS_DIR/$2" ] && nvm_err "Alias $2 doesn't exist!" && return local NVM_ALIAS_ORIGINAL NVM_ALIAS_ORIGINAL="$(nvm_alias "$2")" command rm -f "$NVM_ALIAS_DIR/$2" - echo "Deleted alias $2 - restore it with \`nvm alias $2 "$NVM_ALIAS_ORIGINAL"\`" + nvm_echo "Deleted alias $2 - restore it with \`nvm alias \"$2\" \"$NVM_ALIAS_ORIGINAL\"\`" ;; "reinstall-packages" | "copy-packages" ) if [ $# -ne 2 ]; then - >&2 nvm help + >&2 nvm --help return 127 fi local PROVIDED_VERSION PROVIDED_VERSION="$2" - if [ "$PROVIDED_VERSION" = "$(nvm_ls_current)" ] || [ "$(nvm_version "$PROVIDED_VERSION")" = "$(nvm_ls_current)" ]; then - echo 'Can not reinstall packages from the current version of node.' >&2 + if [ "$PROVIDED_VERSION" = "$(nvm_ls_current)" ] || [ "$(nvm_version "$PROVIDED_VERSION" || return 0)" = "$(nvm_ls_current)" ]; then + nvm_err 'Can not reinstall packages from the current version of node.' return 2 fi local VERSION if [ "_$PROVIDED_VERSION" = "_system" ]; then if ! nvm_has_system_node && ! nvm_has_system_iojs; then - echo 'No system version of node or io.js detected.' >&2 + nvm_err 'No system version of node or io.js detected.' return 3 fi VERSION="system" else - VERSION="$(nvm_version "$PROVIDED_VERSION")" + VERSION="$(nvm_version "$PROVIDED_VERSION" || return 0)" fi local NPMLIST @@ -2328,10 +2503,10 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' INSTALLS="${NPMLIST%% //// *}" LINKS="${NPMLIST##* //// }" - echo "Reinstalling global packages from $VERSION..." - echo "$INSTALLS" | command xargs npm install -g --quiet + nvm_echo "Reinstalling global packages from $VERSION..." + nvm_echo "$INSTALLS" | command xargs npm install -g --quiet - echo "Linking global packages from $VERSION..." + nvm_echo "Linking global packages from $VERSION..." set -f; IFS=' ' # necessary to turn off variable expansion except for newlines for LINK in $LINKS; do @@ -2344,7 +2519,7 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' ;; "clear-cache" ) command rm -f "$NVM_DIR/v*" "$(nvm_version_dir)" 2>/dev/null - echo "Cache cleared." + nvm_echo 'Cache cleared.' ;; "version" ) nvm_version "$2" @@ -2353,7 +2528,7 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' nvm_remote_version "$2" ;; "--version" ) - echo "0.31.0" + nvm_echo '0.31.1' ;; "unload" ) unset -f nvm nvm_print_versions nvm_checksum \ @@ -2363,7 +2538,7 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' nvm_ls_remote nvm_ls_remote_iojs nvm_ls_remote_index_tab \ nvm_ls nvm_remote_version nvm_remote_versions \ nvm_install_iojs_binary nvm_install_node_binary \ - nvm_install_node_source \ + nvm_install_node_source nvm_check_file_permissions \ nvm_version nvm_rc_version nvm_match_version \ nvm_ensure_default_set nvm_get_arch nvm_get_os \ nvm_print_implicit_alias nvm_validate_implicit_alias \ @@ -2379,11 +2554,11 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | command grep -v "N/A" | command sed '/^$/d' 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 \ - nvm_process_parameters > /dev/null 2>&1 + nvm_has_colors nvm_process_parameters > /dev/null 2>&1 unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1 ;; * ) - >&2 nvm help + >&2 nvm --help return 127 ;; esac @@ -2402,21 +2577,21 @@ nvm_auto() { NVM_MODE="${1-}" local VERSION if [ "_$NVM_MODE" = '_install' ]; then - VERSION="$(nvm_alias default 2>/dev/null || echo)" + VERSION="$(nvm_alias default 2>/dev/null || nvm_echo)" if [ -n "$VERSION" ]; then nvm install "$VERSION" >/dev/null elif nvm_rc_version >/dev/null 2>&1; then nvm install >/dev/null fi elif [ "_$NVM_MODE" = '_use' ]; then - VERSION="$(nvm_alias default 2>/dev/null || echo)" + VERSION="$(nvm_alias default 2>/dev/null || nvm_echo)" if [ -n "$VERSION" ]; then nvm use --silent "$VERSION" >/dev/null elif nvm_rc_version >/dev/null 2>&1; then nvm use --silent >/dev/null fi elif [ "_$NVM_MODE" != '_none' ]; then - echo >&2 'Invalid auto mode supplied.' + nvm_err 'Invalid auto mode supplied.' return 1 fi } diff --git a/package.json b/package.json index 16c16ad..4a6052b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nvm", - "version": "0.31.0", + "version": "0.31.1", "description": "Node Version Manager - Simple bash script to manage multiple active node.js versions", "directories": { "test": "test" diff --git a/test/common.sh b/test/common.sh index 7d09064..f87cc5c 100644 --- a/test/common.sh +++ b/test/common.sh @@ -11,3 +11,9 @@ assert_not_ok() { ! $($FUNCTION $@) || die '"'"$FUNCTION $@"'" should have failed, but succeeded' } + +strip_colors() { + while read -r line; do + echo "$line" | LC_ALL=C command sed 's/\[[ -?]*[@-~]//g' + done +} diff --git "a/test/fast/Aliases/\"nvm alias\" should not accept aliases with slashes" "b/test/fast/Aliases/\"nvm alias\" should not accept aliases with slashes" new file mode 100755 index 0000000..f5b1d0f --- /dev/null +++ "b/test/fast/Aliases/\"nvm alias\" should not accept aliases with slashes" @@ -0,0 +1,27 @@ +#!/bin/sh + +. ../../../nvm.sh + +die () { echo $@ ; exit 1; } + +OUTPUT="$(nvm alias foo/bar baz 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm alias foo/bar baz >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to create an alias with a slash should fail with code 1, got '$EXIT_CODE'" + +OUTPUT="$(nvm alias foo/ baz 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias ending with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm alias foo/ baz >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to create an alias ending with a slash should fail with code 1, got '$EXIT_CODE'" + +OUTPUT="$(nvm alias /bar baz 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias starting with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm alias /bar baz >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to create an alias starting with a slash should fail with code 1, got '$EXIT_CODE'" + diff --git "a/test/fast/Aliases/\"nvm unalias\" should not accept aliases with slashes" "b/test/fast/Aliases/\"nvm unalias\" should not accept aliases with slashes" new file mode 100755 index 0000000..ff0a304 --- /dev/null +++ "b/test/fast/Aliases/\"nvm unalias\" should not accept aliases with slashes" @@ -0,0 +1,27 @@ +#!/bin/sh + +. ../../../nvm.sh + +die () { echo $@ ; exit 1; } + +OUTPUT="$(nvm unalias foo/bar 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to remove an alias with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm unalias foo/bar >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to remove an alias with a slash should fail with code 1, got '$EXIT_CODE'" + +OUTPUT="$(nvm unalias foo/ 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to remove an alias ending with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm unalias foo/ >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to remove an alias ending with a slash should fail with code 1, got '$EXIT_CODE'" + +OUTPUT="$(nvm unalias /bar 2>&1)" +EXPECTED_OUTPUT="Aliases in subdirectories are not supported." +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to remove an alias starting with a slash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'" + +EXIT_CODE="$(nvm unalias /bar >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = "1" ] || die "trying to remove an alias starting with a slash should fail with code 1, got '$EXIT_CODE'" + diff --git "a/test/fast/Aliases/Running \"nvm alias \" again should change the target" "b/test/fast/Aliases/Running \"nvm alias \" again should change the target" index d4a8a2d..8c8bb68 100755 --- "a/test/fast/Aliases/Running \"nvm alias \" again should change the target" +++ "b/test/fast/Aliases/Running \"nvm alias \" again should change the target" @@ -1,6 +1,7 @@ #!/bin/sh . ../../../nvm.sh +. ../../common.sh die () { echo $@ ; exit 1; } @@ -10,12 +11,14 @@ if [ -n "$ZSH_VERSION" ]; then setopt noclobber fi -nvm alias test-stable-1 0.0.2 +nvm alias test-stable-1 0.0.2 || die '`nvm alias test-stable-1 0.0.2` failed' -nvm alias test-stable-1 | \grep -e "test-stable-1 -> 0.0.2 (-> v0.0.2)" \ - || die "nvm alias test-stable-1 0.0.2 did not set test-stable-1 to 0.0.2" +OUTPUT="$(nvm alias test-stable-1 | strip_colors)" +EXPECTED_OUTPUT='test-stable-1 -> 0.0.2 (-> v0.0.2)' +echo "$OUTPUT" | \grep -F "$EXPECTED_OUTPUT" || die "nvm alias test-stable-1 0.0.2 did not set test-stable-1 to 0.0.2: got '$OUTPUT'" -nvm alias test-stable-1 0.0.1 +nvm alias test-stable-1 0.0.1 || die '`nvm alias test-stable-1 0.0.1` failed' -nvm alias test-stable-1 | \grep -e "test-stable-1 -> 0.0.1 (-> v0.0.1)" \ - || die "nvm alias test-stable-1 0.0.1 did not set test-stable-1 to 0.0.1" +OUTPUT="$(nvm alias test-stable-1 | strip_colors)" +EXPECTED_OUTPUT='test-stable-1 -> 0.0.1 (-> v0.0.1)' +echo "$OUTPUT" | \grep -F "$EXPECTED_OUTPUT" || die "nvm alias test-stable-1 0.0.1 did not set test-stable-1 to 0.0.1: got '$OUTPUT'" diff --git "a/test/fast/Aliases/Running \"nvm alias\" lists implicit aliases when they do not exist" "b/test/fast/Aliases/Running \"nvm alias\" lists implicit aliases when they do not exist" index 8fd73d8..2c27ad1 100755 --- "a/test/fast/Aliases/Running \"nvm alias\" lists implicit aliases when they do not exist" +++ "b/test/fast/Aliases/Running \"nvm alias\" lists implicit aliases when they do not exist" @@ -1,26 +1,27 @@ #!/bin/sh . ../../../nvm.sh +. ../../common.sh die () { echo $@ ; exit 1; } -NVM_ALIAS_OUTPUT=$(nvm alias) +NVM_ALIAS_OUTPUT=$(nvm alias | strip_colors) EXPECTED_STABLE="$(nvm_print_implicit_alias local stable)" STABLE_VERSION="$(nvm_version "$EXPECTED_STABLE")" -echo "$NVM_ALIAS_OUTPUT" | \grep -e "^stable -> $EXPECTED_STABLE (-> $STABLE_VERSION) (default)$" \ - || die "nvm alias did not contain the default local stable node version" +echo "$NVM_ALIAS_OUTPUT" | \grep -F "stable -> $EXPECTED_STABLE (-> $STABLE_VERSION) (default)" \ + || die "nvm alias did not contain the default local stable node version; got '$NVM_ALIAS_OUTPUT'" -echo "$NVM_ALIAS_OUTPUT" | \grep -e "^node -> stable (-> $STABLE_VERSION) (default)$" \ - || die "nvm alias did not contain the default local stable node version under 'node'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F "node -> stable (-> $STABLE_VERSION) (default)" \ + || die "nvm alias did not contain the default local stable node version under 'node'; got '$NVM_ALIAS_OUTPUT'" EXPECTED_UNSTABLE="$(nvm_print_implicit_alias local unstable)" UNSTABLE_VERSION="$(nvm_version "$EXPECTED_UNSTABLE")" -echo "$NVM_ALIAS_OUTPUT" | \grep -e "^unstable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION) (default)$" \ - || die "nvm alias did not contain the default local unstable node version" +echo "$NVM_ALIAS_OUTPUT" | \grep -F "unstable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION) (default)" \ + || die "nvm alias did not contain the default local unstable node version; got '$NVM_ALIAS_OUTPUT'" EXPECTED_IOJS="$(nvm_print_implicit_alias local iojs)" IOJS_VERSION="$(nvm_version "$EXPECTED_IOJS")" -echo "$NVM_ALIAS_OUTPUT" | \grep -e "^iojs -> $EXPECTED_IOJS (-> $IOJS_VERSION) (default)$" \ - || die "nvm alias did not contain the default local iojs version" +echo "$NVM_ALIAS_OUTPUT" | \grep -F "iojs -> $EXPECTED_IOJS (-> $IOJS_VERSION) (default)" \ + || die "nvm alias did not contain the default local iojs version; got '$NVM_ALIAS_OUTPUT'" diff --git "a/test/fast/Aliases/Running \"nvm alias\" lists manual aliases instead of implicit aliases when present" "b/test/fast/Aliases/Running \"nvm alias\" lists manual aliases instead of implicit aliases when present" index 6c0fa99..45346bd 100755 --- "a/test/fast/Aliases/Running \"nvm alias\" lists manual aliases instead of implicit aliases when present" +++ "b/test/fast/Aliases/Running \"nvm alias\" lists manual aliases instead of implicit aliases when present" @@ -1,6 +1,7 @@ #!/bin/sh . ../../../nvm.sh +. ../../common.sh die () { echo $@ ; cleanup ; exit 1; } cleanup () { @@ -31,19 +32,18 @@ nvm alias unstable "$EXPECTED_STABLE" nvm alias node stable nvm alias iojs unstable -NVM_ALIAS_OUTPUT=$(nvm alias) +NVM_ALIAS_OUTPUT=$(nvm alias | strip_colors) -echo "$NVM_ALIAS_OUTPUT" | command grep -e "^stable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION)$" \ - || die "nvm alias did not contain the overridden 'stable' alias" +echo "$NVM_ALIAS_OUTPUT" | command grep -F "stable -> $EXPECTED_UNSTABLE (-> $UNSTABLE_VERSION)" \ + || die "nvm alias did not contain the overridden 'stable' alias; got '$NVM_ALIAS_OUTPUT'" -echo "$NVM_ALIAS_OUTPUT" | command grep -e "^unstable -> $EXPECTED_STABLE (-> $STABLE_VERSION)$" \ - || die "nvm alias did not contain the overridden 'unstable' alias" +echo "$NVM_ALIAS_OUTPUT" | command grep -F "unstable -> $EXPECTED_STABLE (-> $STABLE_VERSION)" \ + || die "nvm alias did not contain the overridden 'unstable' alias; got '$NVM_ALIAS_OUTPUT'" -echo "$NVM_ALIAS_OUTPUT" | command grep -e "^node -> stable (-> $UNSTABLE_VERSION)$" \ - || die "nvm alias did not contain the overridden 'node' alias" +echo "$NVM_ALIAS_OUTPUT" | command grep -F "node -> stable (-> $UNSTABLE_VERSION)" \ + || die "nvm alias did not contain the overridden 'node' alias; got '$NVM_ALIAS_OUTPUT'" -echo "$NVM_ALIAS_OUTPUT" | command grep -e "^iojs -> unstable (-> $STABLE_VERSION)$" \ - || die "nvm alias did not contain the overridden 'iojs' alias" +echo "$NVM_ALIAS_OUTPUT" | command grep -F "iojs -> unstable (-> $STABLE_VERSION)" \ + || die "nvm alias did not contain the overridden 'iojs' alias; got '$NVM_ALIAS_OUTPUT'" cleanup - diff --git "a/test/fast/Aliases/Running \"nvm alias\" should list all aliases." "b/test/fast/Aliases/Running \"nvm alias\" should list all aliases." index 1a7cac1..1135388 100755 --- "a/test/fast/Aliases/Running \"nvm alias\" should list all aliases." +++ "b/test/fast/Aliases/Running \"nvm alias\" should list all aliases." @@ -1,48 +1,48 @@ #!/bin/sh . ../../../nvm.sh +. ../../common.sh die () { echo $@ ; exit 1; } -NVM_ALIAS_OUTPUT=$(nvm alias) -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-1 -> 0.0.1 (-> v0.0.1)$' \ - || die "did not find test-stable-1 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-2 -> 0.0.2 (-> v0.0.2)$' \ - || die "did not find test-stable-2 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-3 -> 0.0.3 (-> v0.0.3)$' \ - || die "did not find test-stable-3 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-4 -> 0.0.4 (-> v0.0.4)$' \ - || die "did not find test-stable-4 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-5 -> 0.0.5 (-> v0.0.5)$' \ - || die "did not find test-stable-5 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-6 -> 0.0.6 (-> v0.0.6)$' \ - || die "did not find test-stable-6 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-7 -> 0.0.7 (-> v0.0.7)$' \ - || die "did not find test-stable-7 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-8 -> 0.0.8 (-> v0.0.8)$' \ - || die "did not find test-stable-8 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-9 -> 0.0.9 (-> v0.0.9)$' \ - || die "did not find test-stable-9 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-stable-10 -> 0.0.10 (-> v0.0.10)$' \ - || die "did not find test-stable-10 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-1 -> 0.1.1 (-> v0.1.1)$' \ - || die "did not find test-unstable-1 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-2 -> 0.1.2 (-> v0.1.2)$' \ - || die "did not find test-unstable-2 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-3 -> 0.1.3 (-> v0.1.3)$' \ - || die "did not find test-unstable-3 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-4 -> 0.1.4 (-> v0.1.4)$' \ - || die "did not find test-unstable-4 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-5 -> 0.1.5 (-> v0.1.5)$' \ - || die "did not find test-unstable-5 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-6 -> 0.1.6 (-> v0.1.6)$' \ - || die "did not find test-unstable-6 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-7 -> 0.1.7 (-> v0.1.7)$' \ - || die "did not find test-unstable-7 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-8 -> 0.1.8 (-> v0.1.8)$' \ - || die "did not find test-unstable-8 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-9 -> 0.1.9 (-> v0.1.9)$' \ - || die "did not find test-unstable-9 alias" -echo "$NVM_ALIAS_OUTPUT" | \grep -e '^test-unstable-10 -> 0.1.10 (-> v0.1.10)$' \ - || die "did not find test-unstable-10 alias" - +NVM_ALIAS_OUTPUT="$(nvm alias | strip_colors)" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-1 -> 0.0.1 (-> v0.0.1)' \ + || die "did not find test-stable-1 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-2 -> 0.0.2 (-> v0.0.2)' \ + || die "did not find test-stable-2 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-3 -> 0.0.3 (-> v0.0.3)' \ + || die "did not find test-stable-3 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-4 -> 0.0.4 (-> v0.0.4)' \ + || die "did not find test-stable-4 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-5 -> 0.0.5 (-> v0.0.5)' \ + || die "did not find test-stable-5 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-6 -> 0.0.6 (-> v0.0.6)' \ + || die "did not find test-stable-6 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-7 -> 0.0.7 (-> v0.0.7)' \ + || die "did not find test-stable-7 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-8 -> 0.0.8 (-> v0.0.8)' \ + || die "did not find test-stable-8 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-9 -> 0.0.9 (-> v0.0.9)' \ + || die "did not find test-stable-9 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-stable-10 -> 0.0.10 (-> v0.0.10)' \ + || die "did not find test-stable-10 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-1 -> 0.1.1 (-> v0.1.1)' \ + || die "did not find test-unstable-1 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-2 -> 0.1.2 (-> v0.1.2)' \ + || die "did not find test-unstable-2 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-3 -> 0.1.3 (-> v0.1.3)' \ + || die "did not find test-unstable-3 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-4 -> 0.1.4 (-> v0.1.4)' \ + || die "did not find test-unstable-4 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-5 -> 0.1.5 (-> v0.1.5)' \ + || die "did not find test-unstable-5 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-6 -> 0.1.6 (-> v0.1.6)' \ + || die "did not find test-unstable-6 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-7 -> 0.1.7 (-> v0.1.7)' \ + || die "did not find test-unstable-7 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-8 -> 0.1.8 (-> v0.1.8)' \ + || die "did not find test-unstable-8 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-9 -> 0.1.9 (-> v0.1.9)' \ + || die "did not find test-unstable-9 alias; got '$NVM_ALIAS_OUTPUT'" +echo "$NVM_ALIAS_OUTPUT" | \grep -F 'test-unstable-10 -> 0.1.10 (-> v0.1.10)' \ + || die "did not find test-unstable-10 alias; got '$NVM_ALIAS_OUTPUT'" diff --git a/test/fast/Aliases/circular/nvm_resolve_alias b/test/fast/Aliases/circular/nvm_resolve_alias index 4b5dab9..e481826 100755 --- a/test/fast/Aliases/circular/nvm_resolve_alias +++ b/test/fast/Aliases/circular/nvm_resolve_alias @@ -1,36 +1,36 @@ #!/bin/sh +. ../../../common.sh die () { echo $@ ; exit 1; } . ../../../../nvm.sh -ALIAS="$(nvm_resolve_alias loopback)" +ALIAS="$(nvm_resolve_alias loopback | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_alias loopback was not ∞; got $ALIAS" -OUTPUT="$(nvm alias loopback)" +OUTPUT="$(nvm alias loopback | strip_colors)" EXPECTED_OUTPUT="loopback -> loopback (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias loopback was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_alias one)" +ALIAS="$(nvm_resolve_alias one | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_alias one was not ∞; got $ALIAS" -OUTPUT="$(nvm alias one)" +OUTPUT="$(nvm alias one | strip_colors)" EXPECTED_OUTPUT="one -> two (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias one was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_alias two)" +ALIAS="$(nvm_resolve_alias two | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_alias two was not ∞; got $ALIAS" -OUTPUT="$(nvm alias two)" +OUTPUT="$(nvm alias two | strip_colors)" EXPECTED_OUTPUT="two -> three (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias two was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_alias three)" +ALIAS="$(nvm_resolve_alias three | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_alias three was not ∞; got $ALIAS" -OUTPUT="$(nvm alias three)" +OUTPUT="$(nvm alias three | strip_colors)" EXPECTED_OUTPUT="three -> one (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias three was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_alias four)" +ALIAS="$(nvm_resolve_alias four | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_alias four was not ∞; got $ALIAS" -OUTPUT="$(nvm alias four)" +OUTPUT="$(nvm alias four | strip_colors)" EXPECTED_OUTPUT="four -> two (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias four was not $EXPECTED_OUTPUT; got $OUTPUT" - diff --git a/test/fast/Aliases/circular/nvm_resolve_local_alias b/test/fast/Aliases/circular/nvm_resolve_local_alias index 1d25054..dace4d0 100755 --- a/test/fast/Aliases/circular/nvm_resolve_local_alias +++ b/test/fast/Aliases/circular/nvm_resolve_local_alias @@ -1,36 +1,36 @@ #!/bin/sh +. ../../../common.sh die () { echo $@ ; exit 1; } . ../../../../nvm.sh -ALIAS="$(nvm_resolve_local_alias loopback)" +ALIAS="$(nvm_resolve_local_alias loopback | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_local_alias loopback was not ∞; got $ALIAS" -OUTPUT="$(nvm alias loopback)" +OUTPUT="$(nvm alias loopback | strip_colors)" EXPECTED_OUTPUT="loopback -> loopback (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias loopback was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_local_alias one)" +ALIAS="$(nvm_resolve_local_alias one | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_local_alias one was not ∞; got $ALIAS" -OUTPUT="$(nvm alias one)" +OUTPUT="$(nvm alias one | strip_colors)" EXPECTED_OUTPUT="one -> two (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias one was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_local_alias two)" +ALIAS="$(nvm_resolve_local_alias two | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_local_alias two was not ∞; got $ALIAS" -OUTPUT="$(nvm alias two)" +OUTPUT="$(nvm alias two | strip_colors)" EXPECTED_OUTPUT="two -> three (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias two was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_local_alias three)" +ALIAS="$(nvm_resolve_local_alias three | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_local_alias three was not ∞; got $ALIAS" -OUTPUT="$(nvm alias three)" +OUTPUT="$(nvm alias three | strip_colors)" EXPECTED_OUTPUT="three -> one (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias three was not $EXPECTED_OUTPUT; got $OUTPUT" -ALIAS="$(nvm_resolve_local_alias four)" +ALIAS="$(nvm_resolve_local_alias four | strip_colors)" [ "_$ALIAS" = "_∞" ] || die "nvm_resolve_local_alias four was not ∞; got $ALIAS" -OUTPUT="$(nvm alias four)" +OUTPUT="$(nvm alias four | strip_colors)" EXPECTED_OUTPUT="four -> two (-> ∞)" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm alias four was not $EXPECTED_OUTPUT; got $OUTPUT" - diff --git a/test/fast/Aliases/nvm_ensure_default_set b/test/fast/Aliases/nvm_ensure_default_set index c719e4b..602ceba 100755 --- a/test/fast/Aliases/nvm_ensure_default_set +++ b/test/fast/Aliases/nvm_ensure_default_set @@ -1,5 +1,7 @@ #!/bin/sh +. ../../common.sh + die () { echo $@ ; exit 1; } . ../../../nvm.sh @@ -14,5 +16,5 @@ OUTPUT="$(nvm_ensure_default_set 0.2)" EXPECTED_OUTPUT="Creating default alias: default -> 0.2 (-> iojs-v0.2.10)" EXIT_CODE="$?" -[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_ensure_default_set 0.2' did not output '$EXPECTED_OUTPUT', got '$OUTPUT'" +[ "_$(echo "$OUTPUT" | strip_colors)" = "_$EXPECTED_OUTPUT" ] || die "'nvm_ensure_default_set 0.2' did not output '$EXPECTED_OUTPUT', got '$OUTPUT'" [ "_$EXIT_CODE" = "_0" ] || die "'nvm_ensure_default_set 0.2' did not exit with 0, got $EXIT_CODE" diff --git "a/test/fast/Listing paths/Running \"nvm which foo\" should return a nonzero exit code when not found" "b/test/fast/Listing paths/Running \"nvm which foo\" should return a nonzero exit code when not found" index 4c4a301..0c1e30b 100755 --- "a/test/fast/Listing paths/Running \"nvm which foo\" should return a nonzero exit code when not found" +++ "b/test/fast/Listing paths/Running \"nvm which foo\" should return a nonzero exit code when not found" @@ -1,4 +1,4 @@ - #!/bin/sh +#!/bin/sh . ../../../nvm.sh diff --git "a/test/fast/Listing versions/Running \"nvm ls 0.0.2\" should display only version 0.0.2." "b/test/fast/Listing versions/Running \"nvm ls 0.0.2\" should display only version 0.0.2." index c2b7a63..45a2d1a 100755 --- "a/test/fast/Listing versions/Running \"nvm ls 0.0.2\" should display only version 0.0.2." +++ "b/test/fast/Listing versions/Running \"nvm ls 0.0.2\" should display only version 0.0.2." @@ -18,4 +18,3 @@ nvm ls 0.0.2 | grep 'v0.0.20' > /dev/null if [ $? -eq 0 ]; then die '"nvm ls 0.0.2" contained v0.0.20' fi - diff --git "a/test/fast/Listing versions/Running \"nvm ls foo\" should return a nonzero exit code when not found" "b/test/fast/Listing versions/Running \"nvm ls foo\" should return a nonzero exit code when not found" index d3f6974..19e0f96 100755 --- "a/test/fast/Listing versions/Running \"nvm ls foo\" should return a nonzero exit code when not found" +++ "b/test/fast/Listing versions/Running \"nvm ls foo\" should return a nonzero exit code when not found" @@ -1,7 +1,6 @@ - #!/bin/sh +#!/bin/sh . ../../../nvm.sh nvm ls nonexistent_version [ "$?" = "3" ] - diff --git "a/test/fast/Listing versions/Running \"nvm ls io\" should return NA" "b/test/fast/Listing versions/Running \"nvm ls io\" should return NA" index ddd1123..2c61b66 100755 --- "a/test/fast/Listing versions/Running \"nvm ls io\" should return NA" +++ "b/test/fast/Listing versions/Running \"nvm ls io\" should return NA" @@ -1,7 +1,6 @@ - #!/bin/sh +#!/bin/sh . ../../../nvm.sh nvm ls io [ "$?" = "3" ] - diff --git "a/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found" "b/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found" index 2d6b012..b4ad7a2 100755 --- "a/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found" +++ "b/test/fast/Listing versions/Running \"nvm ls node_\" should return a nonzero exit code when not found" @@ -1,7 +1,6 @@ - #!/bin/sh +#!/bin/sh . ../../../nvm.sh nvm ls node_ [ "$?" = "3" ] - diff --git "a/test/fast/Listing versions/Running \"nvm ls stable\" and \"nvm ls unstable\" should return the appropriate implicit alias" "b/test/fast/Listing versions/Running \"nvm ls stable\" and \"nvm ls unstable\" should return the appropriate implicit alias" index a5ab151..79051bd 100755 --- "a/test/fast/Listing versions/Running \"nvm ls stable\" and \"nvm ls unstable\" should return the appropriate implicit alias" +++ "b/test/fast/Listing versions/Running \"nvm ls stable\" and \"nvm ls unstable\" should return the appropriate implicit alias" @@ -1,4 +1,4 @@ - #!/bin/sh +#!/bin/sh . ../../../nvm.sh @@ -26,4 +26,3 @@ nvm ls stable | \grep -v "$STABLE_VERSION" >/dev/null \ || die "'nvm ls stable' contained $STABLE_VERSION instead of v0.1.2" nvm ls stable | \grep v0.1.2 >/dev/null \ || die "'nvm ls stable' did not contain v0.1.2" - diff --git "a/test/fast/Listing versions/Running \"nvm ls system\" should include \"system\" when appropriate" "b/test/fast/Listing versions/Running \"nvm ls system\" should include \"system\" when appropriate" index f1e5ef6..d24cb3c 100755 --- "a/test/fast/Listing versions/Running \"nvm ls system\" should include \"system\" when appropriate" +++ "b/test/fast/Listing versions/Running \"nvm ls system\" should include \"system\" when appropriate" @@ -18,4 +18,3 @@ nvm ls system | grep system 2>&1 > /dev/null nvm_has_system_node() { return 1; } nvm ls system | grep system 2>&1 > /dev/null [ $? -ne 0 ] || die '"nvm ls system" contained "system" when system node is not present' - diff --git "a/test/fast/Listing versions/Running \"nvm ls\" should filter out \"versions\"" "b/test/fast/Listing versions/Running \"nvm ls\" should filter out \"versions\"" index c4d61bd..d63066d 100755 --- "a/test/fast/Listing versions/Running \"nvm ls\" should filter out \"versions\"" +++ "b/test/fast/Listing versions/Running \"nvm ls\" should filter out \"versions\"" @@ -8,4 +8,3 @@ mkdir -p ../../../versions/node [ -z "$(nvm ls | \grep 'versions')" ] # The result should contain only the appropriate version numbers. - diff --git "a/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate" "b/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate" index 9afd40a..e8554f0 100755 --- "a/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate" +++ "b/test/fast/Listing versions/Running \"nvm ls\" should include \"system\" when appropriate" @@ -18,4 +18,3 @@ nvm ls | grep system 2>&1 > /dev/null nvm_has_system_node() { return 1; } nvm ls | grep system 2>&1 > /dev/null [ $? -ne 0 ] || die '"nvm ls" contained "system" when system node is not present' - diff --git "a/test/fast/Listing versions/Running \"nvm ls\" should list versions in the \"versions\" directory" "b/test/fast/Listing versions/Running \"nvm ls\" should list versions in the \"versions\" directory" index 8368b1e..488e991 100755 --- "a/test/fast/Listing versions/Running \"nvm ls\" should list versions in the \"versions\" directory" +++ "b/test/fast/Listing versions/Running \"nvm ls\" should list versions in the \"versions\" directory" @@ -9,4 +9,3 @@ mkdir ../../../v0.1.3 nvm ls 0.12 | grep v0.12.1 || die '"nvm ls" did not list a version in the versions/ directory' nvm ls 0.1 | grep v0.1.3 || die '"nvm ls" did not list a version not in the versions/ directory' - diff --git "a/test/fast/Listing versions/Running \"nvm ls\" with node-like versioning vx.x.x should only list a matched version" "b/test/fast/Listing versions/Running \"nvm ls\" with node-like versioning vx.x.x should only list a matched version" index 43c77d8..eeebea5 100755 --- "a/test/fast/Listing versions/Running \"nvm ls\" with node-like versioning vx.x.x should only list a matched version" +++ "b/test/fast/Listing versions/Running \"nvm ls\" with node-like versioning vx.x.x should only list a matched version" @@ -8,4 +8,3 @@ nvm ls v0.1 | grep v0.1.2 && nvm ls v0.1.2 | grep v0.1.2 && nvm ls v0.1. | grep v0.1.2 && nvm ls v0.1.1 | grep N/A - diff --git "a/test/fast/Running \"nvm uninstall\" with incorrect file permissions fails nicely" "b/test/fast/Running \"nvm uninstall\" with incorrect file permissions fails nicely" new file mode 100755 index 0000000..1fad640 --- /dev/null +++ "b/test/fast/Running \"nvm uninstall\" with incorrect file permissions fails nicely" @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../.. +mkdir v0.0.1 +mkdir src/node-v0.0.1 + +sudo touch v0.0.1/sudo + +. ./nvm.sh + +RETURN_MESSAGE="$(nvm uninstall v0.0.1 2>&1)" +CHECK_FOR="Cannot uninstall, incorrect permissions on installation folder" + +test "${RETURN_MESSAGE#*$CHECK_FOR}" != "$RETURN_MESSAGE" || exit 1 diff --git a/test/fast/Unit tests/iojs.org-dist-index.tab b/test/fast/Unit tests/mocks/iojs.org-dist-index.tab similarity index 100% rename from test/fast/Unit tests/iojs.org-dist-index.tab rename to test/fast/Unit tests/mocks/iojs.org-dist-index.tab diff --git a/test/fast/Unit tests/nodejs.org-dist-index.tab b/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab similarity index 69% rename from test/fast/Unit tests/nodejs.org-dist-index.tab rename to test/fast/Unit tests/mocks/nodejs.org-dist-index.tab index 030ddb9..c7c6bd3 100644 --- a/test/fast/Unit tests/nodejs.org-dist-index.tab +++ b/test/fast/Unit tests/mocks/nodejs.org-dist-index.tab @@ -1,18 +1,45 @@ version date files npm v8 uv zlib openssl modules lts +v6.0.0 2016-04-26 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.8.6 5.0.71.35 1.9.0 1.2.8 1.0.2g 48 - +v5.11.0 2016-04-21 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.8.6 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.10.1 2016-04-05 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.8.3 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.10.0 2016-04-01 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.8.3 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.9.1 2016-03-22 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.7.3 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.9.0 2016-03-16 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.7.3 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.8.0 2016-03-09 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.7.3 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.7.1 2016-03-02 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.6.0 4.6.85.31 1.8.0 1.2.8 1.0.2g 47 - +v5.7.0 2016-02-23 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.6.0 4.6.85.31 1.8.0 1.2.8 1.0.2f 47 - +v5.6.0 2016-02-09 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.6.0 4.6.85.31 1.8.0 1.2.8 1.0.2f 47 - +v5.5.0 2016-01-21 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.8.0 1.2.8 1.0.2e 47 - +v5.4.1 2016-01-12 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.8.0 1.2.8 1.0.2e 47 - +v5.4.0 2016-01-06 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.8.0 1.2.8 1.0.2e 47 - v5.3.0 2015-12-15 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.8.0 1.2.8 1.0.2e 47 - v5.2.0 2015-12-09 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.7.5 1.2.8 1.0.2e 47 - v5.1.1 2015-12-03 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.7.5 1.2.8 1.0.2e 47 - v5.1.0 2015-11-17 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.12 4.6.85.31 1.7.5 1.2.8 1.0.2d 47 - v5.0.0 2015-10-29 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 3.3.6 4.6.85.28 1.7.5 1.2.8 1.0.2d 47 - +v4.4.3 2016-04-12 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.15.1 4.5.103.35 1.8.0 1.2.8 1.0.2g 46 Argon +v4.4.2 2016-04-01 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.15.0 4.5.103.35 1.8.0 1.2.8 1.0.2g 46 Argon +v4.4.1 2016-03-22 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.20 4.5.103.35 1.8.0 1.2.8 1.0.2g 46 Argon +v4.4.0 2016-03-08 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.20 4.5.103.35 1.8.0 1.2.8 1.0.2g 46 Argon +v4.3.2 2016-03-02 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-ppc64le,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.8.0 1.2.8 1.0.2g 46 Argon +v4.3.1 2016-02-16 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.8.0 1.2.8 1.0.2f 46 Argon +v4.3.0 2016-02-09 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.8.0 1.2.8 1.0.2f 46 Argon +v4.2.6 2016-01-21 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.8.0 1.2.8 1.0.2e 46 Argon +v4.2.5 2016-01-20 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.8.0 1.2.8 1.0.2e 46 Argon +v4.2.4 2015-12-23 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.12 4.5.103.35 1.7.5 1.2.8 1.0.2e 46 Argon v4.2.3 2015-12-03 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.7 4.5.103.35 1.7.5 1.2.8 1.0.2e 46 Argon v4.2.2 2015-11-03 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.7 4.5.103.35 1.7.5 1.2.8 1.0.2d 46 Argon v4.2.1 2015-10-13 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.7 4.5.103.35 1.7.5 1.2.8 1.0.2d 46 Argon v4.2.0 2015-10-12 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.7 4.5.103.35 1.7.5 1.2.8 1.0.2d 46 Argon v4.1.2 2015-10-05 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.4 4.5.103.35 1.7.5 1.2.8 1.0.2d 46 - v4.1.1 2015-09-23 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.4 4.5.103.33 1.7.4 1.2.8 1.0.2d 46 - -v4.1.0 2015-09-18 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.3 4.5.103.33 1.7.4 1.2.8 1.0.2d 46 - +v4.1.0 2015-09-17 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.3 4.5.103.33 1.7.4 1.2.8 1.0.2d 46 - v4.0.0 2015-09-08 headers,linux-arm64,linux-armv6l,linux-armv7l,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,src,sunos-x64,sunos-x86,win-x64-msi,win-x86-msi 2.14.2 4.5.103.30 1.7.3 1.2.8 1.0.2d 46 - -v0.12.9 2015-12-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1p 14 - +v0.12.13 2016-03-31 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.15.0 3.28.71.19 1.6.1 1.2.8 1.0.1s 14 - +v0.12.12 2016-03-08 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1s 14 - +v0.12.11 2016-03-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1s 14 - +v0.12.10 2016-02-09 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1r 14 - +v0.12.9 2015-12-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1q 14 - v0.12.8 2015-11-24 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.14.9 3.28.71.19 1.6.1 1.2.8 1.0.1p 14 - v0.12.7 2015-07-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.11.3 3.28.71.19 1.6.1 1.2.8 1.0.1p 14 - v0.12.6 2015-07-04 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.11.2 3.28.71.19 1.6.1 1.2.8 1.0.1o 14 - @@ -24,27 +51,30 @@ v0.12.1 2015-03-24 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,s v0.12.0 2015-02-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.5.1 3.28.73.0 1.0.2 1.2.8 1.0.1l 14 - v0.11.16 2015-01-30 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.3.0 3.28.73.0 1.0.2 1.2.8 1.0.1l 14 - v0.11.15 2015-01-20 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.1.6 3.28.73.0 1.0.2 1.2.8 1.0.1j 14 - -v0.11.14 2015-01-16 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.0.0 3.26.33.0 1.0.0 1.2.3 1.0.1i 14 - +v0.11.14 2014-08-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.0.0 3.26.33.0 1.0.0 1.2.3 1.0.1i 14 - v0.11.13 2014-05-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.9 3.25.30.0 0.11.25 1.2.3 1.0.1g 14 - -v0.11.12 2014-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.3 3.22.24.19 0.11.22 1.2.3 1.0.1f 14 - -v0.11.11 2014-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.25 3.22.24.19 0.11.18 1.2.3 1.0.1f 14 - -v0.11.10 2014-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.22 3.22.24.10 0.11.17 1.2.3 1.0.1e 13 - -v0.11.9 2013-12-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.15 3.22.24.5 0.11.15 1.2.3 1.0.1e 13 - -v0.11.8 2013-12-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.13 3.21.18.3 0.11.14 1.2.3 1.0.1e 13 - -v0.11.7 2013-10-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.20.17.0 0.11.13 1.2.3 1.0.1e 0x000C - -v0.11.6 2013-08-22 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x86-msi 1.3.8 3.20.14.1 0.11.8 1.2.3 1.0.1e 0x000C - -v0.11.5 2013-08-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.6 3.20.11.0 0.11.7 1.2.3 1.0.1e 0x000C - +v0.11.12 2014-03-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.3 3.22.24.19 0.11.22 1.2.3 1.0.1f 14 - +v0.11.11 2014-01-29 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.25 3.22.24.19 0.11.18 1.2.3 1.0.1f 14 - +v0.11.10 2013-12-31 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.22 3.22.24.10 0.11.17 1.2.3 1.0.1e 13 - +v0.11.9 2013-11-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.15 3.22.24.5 0.11.15 1.2.3 1.0.1e 13 - +v0.11.8 2013-10-30 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.13 3.21.18.3 0.11.14 1.2.3 1.0.1e 13 - +v0.11.7 2013-09-04 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.20.17.0 0.11.13 1.2.3 1.0.1e 0x000C - +v0.11.6 2013-08-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x86-msi 1.3.8 3.20.14.1 0.11.8 1.2.3 1.0.1e 0x000C - +v0.11.5 2013-08-07 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.6 3.20.11.0 0.11.7 1.2.3 1.0.1e 0x000C - v0.11.4 2013-07-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x86-msi 1.3.4 3.20.2.0 0.11.5 1.2.3 1.0.1e 0x000C - v0.11.3 2013-06-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.25 3.19.13.0 0.11.5 1.2.3 1.0.1e 0x000C - v0.11.2 2013-05-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.21 3.19.0.0 0.11.2 1.2.3 1.0.1e 0x000C - v0.11.1 2013-04-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.18.0.0 0.11.1 1.2.3 1.0.1e 0x000C - -v0.11.0 2013-04-01 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.15 3.17.13.0 0.10.3 1.2.3 1.0.1e 0x000C - -v0.10.41 2015-12-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.29 3.14.5.9 0.10.36 1.2.8 1.0.1p 11 - +v0.11.0 2013-03-28 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.15 3.17.13.0 0.10.3 1.2.3 1.0.1e 0x000C - +v0.10.44 2016-03-31 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 2.15.0 3.14.5.9 0.10.36 1.2.8 1.0.1s 11 - +v0.10.43 2016-03-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.29 3.14.5.9 0.10.36 1.2.8 1.0.1s 11 - +v0.10.42 2016-02-09 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.29 3.14.5.9 0.10.36 1.2.8 1.0.1r 11 - +v0.10.41 2015-12-03 headers,linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.29 3.14.5.9 0.10.36 1.2.8 1.0.1q 11 - v0.10.40 2015-07-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.36 1.2.8 1.0.1p 11 - v0.10.39 2015-06-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.36 1.2.8 1.0.1o 11 - v0.10.38 2015-03-23 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.36 1.2.8 1.0.1m 11 - -v0.10.37 2015-03-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.36 1.2.8 1.0.1l 11 - -v0.10.36 2015-01-30 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.30 1.2.8 1.0.1l 11 - +v0.10.37 2015-03-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.36 1.2.8 1.0.1l 11 - +v0.10.36 2015-01-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.30 1.2.8 1.0.1l 11 - v0.10.35 2014-12-22 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.30 1.2.8 1.0.1j 11 - v0.10.34 2014-12-17 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.30 1.2.8 1.0.1j 11 - v0.10.33 2014-10-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.28 3.14.5.9 0.10.29 1.2.3 1.0.1j 11 - @@ -52,47 +82,47 @@ v0.10.32 2014-09-16 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src, v0.10.31 2014-08-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.23 3.14.5.9 0.10.28 1.2.3 1.0.1i 11 - v0.10.30 2014-07-31 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.21 3.14.5.9 0.10.28 1.2.3 1.0.1h 11 - v0.10.29 2014-06-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.14 3.14.5.9 0.10.27 1.2.3 1.0.1h 11 - -v0.10.28 2014-06-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.9 3.14.5.9 0.10.27 1.2.3 1.0.1g 11 - -v0.10.27 2014-08-07 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.8 3.14.5.9 0.10.27 1.2.3 1.0.1g 11 - -v0.10.26 2014-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.3 3.14.5.9 0.10.25 1.2.3 1.0.1e 11 - -v0.10.25 2014-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.24 3.14.5.9 0.10.23 1.2.3 1.0.1e 11 - +v0.10.28 2014-05-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.9 3.14.5.9 0.10.27 1.2.3 1.0.1g 11 - +v0.10.27 2014-05-01 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.8 3.14.5.9 0.10.27 1.2.3 1.0.1g 11 - +v0.10.26 2014-02-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.4.3 3.14.5.9 0.10.25 1.2.3 1.0.1e 11 - +v0.10.25 2014-01-23 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.24 3.14.5.9 0.10.23 1.2.3 1.0.1e 11 - v0.10.24 2013-12-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.21 3.14.5.9 0.10.21 1.2.3 1.0.1e 11 - v0.10.23 2013-12-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.17 3.14.5.9 0.10.20 1.2.3 1.0.1e 11 - -v0.10.22 2013-12-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.14 3.14.5.9 0.10.19 1.2.3 1.0.1e 11 - +v0.10.22 2013-11-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.14 3.14.5.9 0.10.19 1.2.3 1.0.1e 11 - v0.10.21 2013-10-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.11 3.14.5.9 0.10.18 1.2.3 1.0.1e 11 - v0.10.20 2013-09-30 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.11 3.14.5.9 0.10.17 1.2.3 1.0.1e 11 - -v0.10.19 2013-09-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.11 3.14.5.9 0.10.17 1.2.3 1.0.1e 11 - -v0.10.18 2013-10-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.14.5.9 0.10.15 1.2.3 1.0.1e 11 - -v0.10.17 2013-08-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.14.5.9 0.10.14 1.2.3 1.0.1e 11 - +v0.10.19 2013-09-24 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.11 3.14.5.9 0.10.17 1.2.3 1.0.1e 11 - +v0.10.18 2013-09-04 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.14.5.9 0.10.15 1.2.3 1.0.1e 11 - +v0.10.17 2013-08-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.14.5.9 0.10.14 1.2.3 1.0.1e 11 - v0.10.16 2013-08-16 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.8 3.14.5.9 0.10.13 1.2.3 1.0.1e 11 - -v0.10.15 2013-08-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.5 3.14.5.9 0.10.13 1.2.3 1.0.1e 11 - -v0.10.14 2013-08-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.5 3.14.5.9 0.10.13 1.2.3 1.0.1e 11 - -v0.10.13 2013-07-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.2 3.14.5.9 0.10.12 1.2.3 1.0.1e 11 - +v0.10.15 2013-07-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.5 3.14.5.9 0.10.13 1.2.3 1.0.1e 11 - +v0.10.14 2013-07-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.5 3.14.5.9 0.10.13 1.2.3 1.0.1e 11 - +v0.10.13 2013-07-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.3.2 3.14.5.9 0.10.12 1.2.3 1.0.1e 11 - v0.10.12 2013-06-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.32 3.14.5.9 0.10.11 1.2.3 1.0.1e 11 - v0.10.11 2013-06-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.30 3.14.5.9 0.10.11 1.2.3 1.0.1e 11 - v0.10.10 2013-06-04 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.25 3.14.5.9 0.10.10 1.2.3 1.0.1e 11 - -v0.10.9 2013-06-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.24 3.14.5.9 0.10.9 1.2.3 1.0.1e 11 - +v0.10.9 2013-05-30 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.24 3.14.5.9 0.10.9 1.2.3 1.0.1e 11 - v0.10.8 2013-05-24 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.23 3.14.5.9 0.10.8 1.2.3 1.0.1e 11 - v0.10.7 2013-05-17 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.21 3.14.5.8 0.10.7 1.2.3 1.0.1e 11 - v0.10.6 2013-05-14 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.14.5.8 0.10.5 1.2.3 1.0.1e 11 - -v0.10.5 2013-04-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.14.5.8 0.10.5 1.2.3 1.0.1e 11 - -v0.10.4 2013-04-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.14.5.8 0.10.4 1.2.3 1.0.1e 11 - -v0.10.3 2013-04-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.17 3.14.5.8 0.10.3 1.2.3 1.0.1e 0x000B - +v0.10.5 2013-04-23 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.14.5.8 0.10.5 1.2.3 1.0.1e 11 - +v0.10.4 2013-04-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.14.5.8 0.10.4 1.2.3 1.0.1e 11 - +v0.10.3 2013-04-03 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.17 3.14.5.8 0.10.3 1.2.3 1.0.1e 0x000B - v0.10.2 2013-03-28 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.15 3.14.5.8 0.10.3 1.2.3 1.0.1e 0x000B - v0.10.1 2013-03-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.15 3.14.5.8 0.10 1.2.3 1.0.1e 0x000B - v0.10.0 2013-03-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.14 3.14.5.8 0.9 1.2.3 1.0.1e 0x000B - -v0.9.12 2013-03-07 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.12 3.14.5.8 0.9 1.2.3 1.0.1e 0x000B - +v0.9.12 2013-03-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.12 3.14.5.8 0.9 1.2.3 1.0.1e 0x000B - v0.9.11 2013-03-01 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.12 3.14.5.0 0.9 1.2.3 1.0.1e 0x000B - -v0.9.10 2013-02-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.12 3.15.11.15 0.9 1.2.3 1.0.1c 0x000B - +v0.9.10 2013-02-19 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.12 3.15.11.15 0.9 1.2.3 1.0.1c 0x000B - v0.9.9 2013-02-07 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.10 3.15.11.10 0.9 1.2.3 1.0.1c 0x000B - -v0.9.8 2013-02-02 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.3 3.15.11.10 0.9 1.2.3 1.0.1c 0x000A - +v0.9.8 2013-01-24 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.3 3.15.11.10 0.9 1.2.3 1.0.1c 0x000A - v0.9.7 2013-01-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.2 3.15.11.7 0.9 1.2.3 1.0.1c 0x000A - v0.9.6 2013-01-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.0 3.15.11.5 0.9 1.2.3 1.0.1c 0x000A - v0.9.5 2012-12-30 linux-x64,linux-x86,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.70 3.13.7.4 0.9 1.2.3 1.0.1c 0x000A - v0.9.4 2012-12-21 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.70 3.13.7.4 0.9 1.2.3 1.0.1c 0x000A - -v0.9.3 2015-10-14 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.64 3.13.7.4 0.9 1.2.3 1.0.1c 0x000A - +v0.9.3 2012-10-24 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.64 3.13.7.4 0.9 1.2.3 1.0.1c 0x000A - v0.9.2 2012-09-17 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.61 3.11.10.22 0.9 1.2.3 1.0.1c 0x000A - -v0.9.1 2012-09-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.59 3.11.10.19 0.9 1.2.3 1.0.0f 0x000A - +v0.9.1 2012-08-28 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.59 3.11.10.19 0.9 1.2.3 1.0.0f 0x000A - v0.9.0 2012-07-20 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.44 3.11.10.15 0.9 1.2.3 1.0.0f 1 - v0.8.28 2014-07-31 linux-x64,linux-x86,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.30 3.11.10.26 0.8 1.2.3 1.0.0f 1 - v0.8.27 2014-06-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x86-msi 1.2.30 3.11.10.26 0.8 1.2.3 1.0.0f 1 - @@ -100,26 +130,26 @@ v0.8.26 2013-10-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,s v0.8.25 2013-06-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.30 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.24 2013-06-03 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.24 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.23 2013-04-09 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.18 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.22 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.14 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.22 2013-03-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.14 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.21 2013-02-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.11 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.20 2013-02-15 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.11 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.19 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.10 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.19 2013-02-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.10 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.18 2013-01-18 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.2 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.17 2013-01-13 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.0 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.16 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.69 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.17 2013-01-10 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.2.0 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.16 2012-12-12 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.69 3.11.10.25 0.8 1.2.3 1.0.0f 1 - v0.8.15 2012-11-26 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.66 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.14 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.65 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.13 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.65 3.11.10.25 0.8 1.2.3 1.0.0f 1 - -v0.8.12 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.63 3.11.10.22 0.8 1.2.3 1.0.0f 1 - -v0.8.11 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.62 3.11.10.22 0.8 1.2.3 1.0.0f 1 - -v0.8.10 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.62 3.11.10.22 0.8 1.2.3 1.0.0f 1 - -v0.8.9 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.61 3.11.10.22 0.8 1.2.3 1.0.0f 1 - -v0.8.8 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x64-msi,win-x86-exe,win-x86-msi 1.1.59 3.11.10.19 0.8 1.2.3 1.0.0f 1 - -v0.8.7 2015-09-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.49 3.11.10.17 0.8 1.2.3 1.0.0f 1 - +v0.8.14 2012-10-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.65 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.13 2012-10-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.65 3.11.10.25 0.8 1.2.3 1.0.0f 1 - +v0.8.12 2012-10-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.63 3.11.10.22 0.8 1.2.3 1.0.0f 1 - +v0.8.11 2012-09-27 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.62 3.11.10.22 0.8 1.2.3 1.0.0f 1 - +v0.8.10 2012-09-25 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.62 3.11.10.22 0.8 1.2.3 1.0.0f 1 - +v0.8.9 2012-09-11 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.61 3.11.10.22 0.8 1.2.3 1.0.0f 1 - +v0.8.8 2012-08-22 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x64-msi,win-x86-exe,win-x86-msi 1.1.59 3.11.10.19 0.8 1.2.3 1.0.0f 1 - +v0.8.7 2012-08-15 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.49 3.11.10.17 0.8 1.2.3 1.0.0f 1 - v0.8.6 2012-08-06 linux-x64,linux-x86,osx-x64-pkg,osx-x64-tar,osx-x86-tar,src,sunos-x64,sunos-x86,win-x64-exe,win-x86-exe,win-x86-msi 1.1.48 3.11.10.17 0.8 1.2.3 1.0.0f 1 - -v0.8.5 2015-09-06 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.46 3.11.10.17 0.8 1.2.3 1.0.0f 1 - -v0.8.4 2015-09-06 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.45 3.11.10.17 0.8 1.2.3 1.0.0f 1 - -v0.8.3 2015-09-06 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.43 3.11.10.15 0.8 1.2.3 1.0.0f 1 - +v0.8.5 2012-08-02 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.46 3.11.10.17 0.8 1.2.3 1.0.0f 1 - +v0.8.4 2012-07-24 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.45 3.11.10.17 0.8 1.2.3 1.0.0f 1 - +v0.8.3 2012-07-17 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.43 3.11.10.15 0.8 1.2.3 1.0.0f 1 - v0.8.2 2012-07-09 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.36 3.11.10.14 0.8 1.2.3 1.0.0f 1 - v0.8.1 2012-06-29 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.33 3.11.10.12 0.8 1.2.3 1.0.0f 1 - v0.8.0 2012-06-22 osx-x64-pkg,src,win-x64-exe,win-x86-exe,win-x86-msi 1.1.32 3.11.10.10 0.8 1.2.3 1.0.0f 1 - @@ -129,31 +159,31 @@ v0.7.10 2012-06-11 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.25 3.9.24.31 0.6 v0.7.9 2012-05-29 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.23 3.11.1.0 0.6 1.2.3 1.0.0f 1 - v0.7.8 2012-04-18 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.18 3.9.24.9 0.6 1.2.3 1.0.0f 1 - v0.7.7 2012-03-30 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.15 3.9.24.7 0.6 1.2.3 0.9.8r 1 - -v0.7.6 2012-03-31 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.8 3.9.17.0 0.6 1.2.3 0.9.8r 1 - -v0.7.5 2012-03-31 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.1 3.9.5.0 0.6 1.2.3 0.9.8r 1 - -v0.7.4 2012-03-31 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.1 3.9.5.0 0.6 1.2.3 0.9.8r 1 - -v0.7.3 2012-03-31 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.9.2.0 0.6 1.2.3 0.9.8r 1 - -v0.7.2 2012-03-31 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.8.9.0 0.6 1.2.3 0.9.8r 1 - +v0.7.6 2012-03-13 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.8 3.9.17.0 0.6 1.2.3 0.9.8r 1 - +v0.7.5 2012-02-23 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.1 3.9.5.0 0.6 1.2.3 0.9.8r 1 - +v0.7.4 2012-02-14 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.1 3.9.5.0 0.6 1.2.3 0.9.8r 1 - +v0.7.3 2012-02-07 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.9.2.0 0.6 1.2.3 0.9.8r 1 - +v0.7.2 2012-02-01 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.8.9.0 0.6 1.2.3 0.9.8r 1 - v0.7.1 2012-01-23 osx-x64-pkg,src,win-x86-exe 1.1.0-2 3.8.8.0 0.6 1.2.3 0.9.8r 1 - v0.7.0 2012-01-17 osx-x64-pkg,src,win-x86-exe 1.1.0-2 3.8.6.0 0.6 1.2.3 0.9.8r 1 - v0.6.21 2012-08-03 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.37 3.6.6.25 0.6 1.2.3 0.9.8r 1 - v0.6.20 2012-07-10 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.37 3.6.6.25 0.6 1.2.3 0.9.8r 1 - -v0.6.19 2012-06-08 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.24 3.6.6.25 0.6 1.2.3 0.9.8r 1 - +v0.6.19 2012-06-06 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.24 3.6.6.25 0.6 1.2.3 0.9.8r 1 - v0.6.18 2012-05-14 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.21 3.6.6.25 0.6 1.2.3 0.9.8r 1 - v0.6.17 2012-05-04 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.21 3.6.6.25 0.6 1.2.3 0.9.8r 1 - v0.6.16 2012-04-27 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.19 3.6.6.25 0.6 1.2.3 0.9.8r 1 - -v0.6.15 2012-04-09 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.16 3.6.6.24 0.6 1.2.3 0.9.8r 1 - +v0.6.15 2012-04-08 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.16 3.6.6.24 0.6 1.2.3 0.9.8r 1 - v0.6.14 2012-03-23 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.12 3.6.6.24 0.6 1.2.3 0.9.8r 1 - -v0.6.13 2012-03-31 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.9 3.6.6.24 0.6 1.2.3 0.9.8r 1 - +v0.6.13 2012-03-15 osx-x64-pkg,src,win-x64-exe,win-x86-exe 1.1.9 3.6.6.24 0.6 1.2.3 0.9.8r 1 - v0.6.12 2012-03-02 osx-x64-pkg,src,win-x86-exe 1.1.4 3.6.6.24 0.6 1.2.3 0.9.8r 1 - -v0.6.11 2012-02-17 osx-x64-pkg,src,win-x86-exe 1.1.1 3.6.6.20 0.6 1.2.3 0.9.8r 1 - -v0.6.10 2012-02-04 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.6.6.20 0.6 1.2.3 0.9.8r 1 - +v0.6.11 2012-02-08 osx-x64-pkg,src,win-x86-exe 1.1.1 3.6.6.20 0.6 1.2.3 0.9.8r 1 - +v0.6.10 2012-02-03 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.6.6.20 0.6 1.2.3 0.9.8r 1 - v0.6.9 2012-01-27 osx-x64-pkg,src,win-x86-exe 1.1.0-3 3.6.6.19 0.6 1.2.3 0.9.8r 1 - -v0.6.8 2012-01-23 osx-x64-pkg,src,win-x86-exe 1.1.0-2 3.6.6.19 0.6 1.2.3 0.9.8r 1 - +v0.6.8 2012-01-20 osx-x64-pkg,src,win-x86-exe 1.1.0-2 3.6.6.19 0.6 1.2.3 0.9.8r 1 - v0.6.7 2012-01-07 osx-x64-pkg,src,win-x86-exe 1.1.0-beta-10 3.6.6.15 0.6 1.2.3 0.9.8r 1 - -v0.6.6 2012-03-31 osx-x64-pkg,src,win-x86-exe 1.1.0-beta-4 3.6.6.14 0.6 1.2.3 0.9.8r 1 - -v0.6.5 2012-03-31 osx-x64-pkg,src,win-x86-exe 1.1.0-alpha-6 3.6.6.11 0.6 1.2.3 0.9.8r 1 - -v0.6.4 2011-12-03 osx-x64-pkg,src,win-x86-exe 1.1.0-alpha-6 3.6.6.8 0.6 1.2.3 0.9.8r 1 - +v0.6.6 2011-12-15 osx-x64-pkg,src,win-x86-exe 1.1.0-beta-4 3.6.6.14 0.6 1.2.3 0.9.8r 1 - +v0.6.5 2011-12-04 osx-x64-pkg,src,win-x86-exe 1.1.0-alpha-6 3.6.6.11 0.6 1.2.3 0.9.8r 1 - +v0.6.4 2011-12-02 osx-x64-pkg,src,win-x86-exe 1.1.0-alpha-6 3.6.6.8 0.6 1.2.3 0.9.8r 1 - v0.6.3 2011-11-25 osx-x64-pkg,src,win-x86-exe 1.1.0-alpha-2 3.6.6.8 0.6 1.2.3 0.9.8r 1 - v0.6.2 2011-11-18 osx-x64-pkg,src,win-x86-exe - 3.6.6.8 0.6 1.2.3 0.9.8r 1 - v0.6.1 2011-11-11 osx-x64-pkg,src,win-x86-exe - 3.6.6.7 0.1 1.2.3 0.9.8r 1 - @@ -169,7 +199,7 @@ v0.5.3 2011-08-26 src,win-x86-exe - 3.4.14.0 0.1 - - 1 - v0.5.2 2011-08-26 src,win-x86-exe - 3.4.14.0 0.1 - - 1 - v0.5.1 2011-08-26 src,win-x86-exe - 3.4.10.0 0.1 - - 1 - v0.5.0 2011-08-26 src - 3.1.8.25 - - - 1 - -v0.4.12 2015-10-17 src - 3.1.8.26 - - - 1 - +v0.4.12 2011-09-15 src - 3.1.8.26 - - - 1 - v0.4.11 2011-08-26 src - 3.1.8.26 - - - 1 - v0.4.10 2011-08-26 src - 3.1.8.26 - - - 1 - v0.4.9 2011-08-26 src - 3.1.8.25 - - - 1 - @@ -198,10 +228,10 @@ v0.2.3 2011-08-26 src - 2.3.8.0 - - - 1 - v0.2.2 2011-08-26 src - 2.3.8.0 - - - 1 - v0.2.1 2011-08-26 src - 2.3.8.0 - - - 1 - v0.2.0 2011-08-26 src - 2.3.8.0 - - - 1 - -v0.1.104 2011-08-26 src - 2.3.6.1 - - - 1 - -v0.1.103 2011-08-26 src - 2.3.5.0 - - - 1 - -v0.1.102 2011-08-26 src - 2.3.2.0 - - - 1 - -v0.1.101 2011-08-26 src - 2.3.0.0 - - - 1 - +v0.1.104 2011-08-26 src - 2.3.6.1 - - - - - +v0.1.103 2011-08-26 src - 2.3.5.0 - - - - - +v0.1.102 2011-08-26 src - 2.3.2.0 - - - - - +v0.1.101 2011-08-26 src - 2.3.0.0 - - - - - v0.1.100 2011-08-26 src - 2.2.21.0 - - - - - v0.1.99 2011-08-26 src - 2.2.18.0 - - - - - v0.1.98 2011-08-26 src - 2.2.16.0 - - - - - diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote.txt b/test/fast/Unit tests/mocks/nvm_ls_remote.txt new file mode 100644 index 0000000..a46cb95 --- /dev/null +++ b/test/fast/Unit tests/mocks/nvm_ls_remote.txt @@ -0,0 +1,264 @@ +v0.1.14 +v0.1.15 +v0.1.16 +v0.1.17 +v0.1.18 +v0.1.19 +v0.1.20 +v0.1.21 +v0.1.22 +v0.1.23 +v0.1.24 +v0.1.25 +v0.1.26 +v0.1.27 +v0.1.28 +v0.1.29 +v0.1.30 +v0.1.31 +v0.1.32 +v0.1.33 +v0.1.90 +v0.1.91 +v0.1.92 +v0.1.93 +v0.1.94 +v0.1.95 +v0.1.96 +v0.1.97 +v0.1.98 +v0.1.99 +v0.1.100 +v0.1.101 +v0.1.102 +v0.1.103 +v0.1.104 +v0.2.0 +v0.2.1 +v0.2.2 +v0.2.3 +v0.2.4 +v0.2.5 +v0.2.6 +v0.3.0 +v0.3.1 +v0.3.2 +v0.3.3 +v0.3.4 +v0.3.5 +v0.3.6 +v0.3.7 +v0.3.8 +v0.4.0 +v0.4.1 +v0.4.2 +v0.4.3 +v0.4.4 +v0.4.5 +v0.4.6 +v0.4.7 +v0.4.8 +v0.4.9 +v0.4.10 +v0.4.11 +v0.4.12 +v0.5.0 +v0.5.1 +v0.5.2 +v0.5.3 +v0.5.4 +v0.5.5 +v0.5.6 +v0.5.7 +v0.5.8 +v0.5.9 +v0.5.10 +v0.6.0 +v0.6.1 +v0.6.2 +v0.6.3 +v0.6.4 +v0.6.5 +v0.6.6 +v0.6.7 +v0.6.8 +v0.6.9 +v0.6.10 +v0.6.11 +v0.6.12 +v0.6.13 +v0.6.14 +v0.6.15 +v0.6.16 +v0.6.17 +v0.6.18 +v0.6.19 +v0.6.20 +v0.6.21 +v0.7.0 +v0.7.1 +v0.7.2 +v0.7.3 +v0.7.4 +v0.7.5 +v0.7.6 +v0.7.7 +v0.7.8 +v0.7.9 +v0.7.10 +v0.7.11 +v0.7.12 +v0.8.0 +v0.8.1 +v0.8.2 +v0.8.3 +v0.8.4 +v0.8.5 +v0.8.6 +v0.8.7 +v0.8.8 +v0.8.9 +v0.8.10 +v0.8.11 +v0.8.12 +v0.8.13 +v0.8.14 +v0.8.15 +v0.8.16 +v0.8.17 +v0.8.18 +v0.8.19 +v0.8.20 +v0.8.21 +v0.8.22 +v0.8.23 +v0.8.24 +v0.8.25 +v0.8.26 +v0.8.27 +v0.8.28 +v0.9.0 +v0.9.1 +v0.9.2 +v0.9.3 +v0.9.4 +v0.9.5 +v0.9.6 +v0.9.7 +v0.9.8 +v0.9.9 +v0.9.10 +v0.9.11 +v0.9.12 +v0.10.0 +v0.10.1 +v0.10.2 +v0.10.3 +v0.10.4 +v0.10.5 +v0.10.6 +v0.10.7 +v0.10.8 +v0.10.9 +v0.10.10 +v0.10.11 +v0.10.12 +v0.10.13 +v0.10.14 +v0.10.15 +v0.10.16 +v0.10.17 +v0.10.18 +v0.10.19 +v0.10.20 +v0.10.21 +v0.10.22 +v0.10.23 +v0.10.24 +v0.10.25 +v0.10.26 +v0.10.27 +v0.10.28 +v0.10.29 +v0.10.30 +v0.10.31 +v0.10.32 +v0.10.33 +v0.10.34 +v0.10.35 +v0.10.36 +v0.10.37 +v0.10.38 +v0.10.39 +v0.10.40 +v0.10.41 +v0.10.42 +v0.10.43 +v0.10.44 +v0.11.0 +v0.11.1 +v0.11.2 +v0.11.3 +v0.11.4 +v0.11.5 +v0.11.6 +v0.11.7 +v0.11.8 +v0.11.9 +v0.11.10 +v0.11.11 +v0.11.12 +v0.11.13 +v0.11.14 +v0.11.15 +v0.11.16 +v0.12.0 +v0.12.1 +v0.12.2 +v0.12.3 +v0.12.4 +v0.12.5 +v0.12.6 +v0.12.7 +v0.12.8 +v0.12.9 +v0.12.10 +v0.12.11 +v0.12.12 +v0.12.13 +v4.0.0 +v4.1.0 +v4.1.1 +v4.1.2 +v4.2.0 +v4.2.1 +v4.2.2 +v4.2.3 +v4.2.4 +v4.2.5 +v4.2.6 +v4.3.0 +v4.3.1 +v4.3.2 +v4.4.0 +v4.4.1 +v4.4.2 +v4.4.3 +v5.0.0 +v5.1.0 +v5.1.1 +v5.2.0 +v5.3.0 +v5.4.0 +v5.4.1 +v5.5.0 +v5.6.0 +v5.7.0 +v5.7.1 +v5.8.0 +v5.9.0 +v5.9.1 +v5.10.0 +v5.10.1 +v5.11.0 +v6.0.0 diff --git a/test/fast/Unit tests/mocks/nvm_ls_remote_iojs.txt b/test/fast/Unit tests/mocks/nvm_ls_remote_iojs.txt new file mode 100644 index 0000000..d263a73 --- /dev/null +++ b/test/fast/Unit tests/mocks/nvm_ls_remote_iojs.txt @@ -0,0 +1,41 @@ +iojs-v1.0.0 +iojs-v1.0.1 +iojs-v1.0.2 +iojs-v1.0.3 +iojs-v1.0.4 +iojs-v1.1.0 +iojs-v1.2.0 +iojs-v1.3.0 +iojs-v1.4.1 +iojs-v1.4.2 +iojs-v1.4.3 +iojs-v1.5.0 +iojs-v1.5.1 +iojs-v1.6.0 +iojs-v1.6.1 +iojs-v1.6.2 +iojs-v1.6.3 +iojs-v1.6.4 +iojs-v1.7.1 +iojs-v1.8.1 +iojs-v1.8.2 +iojs-v1.8.3 +iojs-v1.8.4 +iojs-v2.0.0 +iojs-v2.0.1 +iojs-v2.0.2 +iojs-v2.1.0 +iojs-v2.2.0 +iojs-v2.2.1 +iojs-v2.3.0 +iojs-v2.3.1 +iojs-v2.3.2 +iojs-v2.3.3 +iojs-v2.3.4 +iojs-v2.4.0 +iojs-v2.5.0 +iojs-v3.0.0 +iojs-v3.1.0 +iojs-v3.2.0 +iojs-v3.3.0 +iojs-v3.3.1 diff --git a/test/fast/Unit tests/nvm_ensure_default_set b/test/fast/Unit tests/nvm_ensure_default_set index edd926c..fb0461b 100755 --- a/test/fast/Unit tests/nvm_ensure_default_set +++ b/test/fast/Unit tests/nvm_ensure_default_set @@ -1,5 +1,7 @@ #!/bin/sh +. ../../common.sh + die () { echo $@ ; exit 1; } . ../../../nvm.sh @@ -7,7 +9,7 @@ die () { echo $@ ; exit 1; } EXPECTED_OUTPUT="nvm_ensure_default_set: a version is required" OUTPUT="$(nvm_ensure_default_set 2>&1 >/dev/null)" EXIT_CODE="$?" -[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_ensure_default_set' did not output "$EXPECTED_OUTPUT", got "$OUTPUT"" +[ "_$(echo "$OUTPUT" | strip_colors)" = "_$EXPECTED_OUTPUT" ] || die "'nvm_ensure_default_set' did not output "$EXPECTED_OUTPUT", got "$OUTPUT"" [ "_$EXIT_CODE" = "_1" ] || die "'nvm_ensure_default_set' did not exit with 1, got "$EXIT_CODE"" # see test/fast/Aliases for remaining nvm_ensure_default_set tests diff --git a/test/fast/Unit tests/nvm_ls_remote b/test/fast/Unit tests/nvm_ls_remote index dbb6358..d8f7d3d 100755 --- a/test/fast/Unit tests/nvm_ls_remote +++ b/test/fast/Unit tests/nvm_ls_remote @@ -9,19 +9,21 @@ cleanup() { . ../../../nvm.sh # sample output at the time the test was written -TAB_PATH="$PWD/nodejs.org-dist-index.tab" +TAB_PATH="$PWD/mocks/nodejs.org-dist-index.tab" nvm_download() { cat "$TAB_PATH" } +EXPECTED_OUTPUT_PATH="$PWD/mocks/nvm_ls_remote.txt" + OUTPUT="$(nvm_ls_remote foo)" EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)" [ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A" [ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE" OUTPUT="$(nvm_ls_remote)" -EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n)" -[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")" +EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH")" +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")" OUTPUT="$(nvm_ls_remote 0.3)" EXPECTED_OUTPUT="v0.3.0 @@ -38,7 +40,7 @@ v0.3.8" # Sanity checks OUTPUT="$(nvm_print_implicit_alias remote stable)" -EXPECTED_OUTPUT="5.3" +EXPECTED_OUTPUT="6.0" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_implicit_alias remote stable did not output $EXPECTED_OUTPUT; got $OUTPUT" OUTPUT="$(nvm_print_implicit_alias remote unstable)" @@ -46,7 +48,7 @@ EXPECTED_OUTPUT="0.11" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_implicit_alias remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT" OUTPUT="$(nvm_ls_remote stable)" -EXPECTED_OUTPUT="v5.3.0" +EXPECTED_OUTPUT="v6.0.0" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote stable did not output $EXPECTED_OUTPUT; got $OUTPUT" OUTPUT="$(nvm_ls_remote unstable)" @@ -54,4 +56,3 @@ EXPECTED_OUTPUT="v0.11.16" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT" cleanup - diff --git a/test/fast/Unit tests/nvm_ls_remote_iojs b/test/fast/Unit tests/nvm_ls_remote_iojs index d93e077..1f909c7 100755 --- a/test/fast/Unit tests/nvm_ls_remote_iojs +++ b/test/fast/Unit tests/nvm_ls_remote_iojs @@ -9,19 +9,21 @@ cleanup() { . ../../../nvm.sh # sample output at the time the test was written -TAB_PATH="$PWD/iojs.org-dist-index.tab" +TAB_PATH="$PWD/mocks/iojs.org-dist-index.tab" nvm_download() { cat "$TAB_PATH" } +EXPECTED_OUTPUT_PATH="$PWD/mocks/nvm_ls_remote_iojs.txt" + OUTPUT="$(nvm_ls_remote_iojs foo)" EXIT_CODE="$(nvm_ls_remote_iojs foo >/dev/null 2>&1 ; echo $?)" [ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A" [ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE" OUTPUT="$(nvm_ls_remote_iojs)" -EXPECTED_OUTPUT="$(nvm_download | \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | sed -e 's/^/iojs-/')" -[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote_iojs did not output expected sorted versions; got $(echo "$OUTPUT") expected $(echo "$EXPECTED_OUTPUT")" +EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH")" +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "bare nvm_ls_remote_iojs did not output expected sorted versions; got $(echo ">$OUTPUT<") expected $(echo ">$EXPECTED_OUTPUT<")" OUTPUT="$(nvm_ls_remote_iojs 1.0)" EXPECTED_OUTPUT="iojs-v1.0.0 diff --git a/test/fast/Unit tests/nvm_make_alias b/test/fast/Unit tests/nvm_make_alias new file mode 100755 index 0000000..c57906d --- /dev/null +++ b/test/fast/Unit tests/nvm_make_alias @@ -0,0 +1,19 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../../nvm.sh + +OUTPUT="$(nvm_make_alias 2>&1)" +EXIT_CODE="$(nvm_make_alias >/dev/null 2>&1 ; echo $?)" +EXPECTED_OUTPUT='an alias name is required' + +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "\`nvm_make_alias\` did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'" +[ "$EXIT_CODE" -eq 1 ] || die "\`nvm_make_alias\` did not exit with 1, got '$EXIT_CODE'" + +OUTPUT="$(nvm_make_alias foo 2>&1)" +EXIT_CODE="$(nvm_make_alias foo >/dev/null 2>&1 ; echo $?)" +EXPECTED_OUTPUT='an alias target version is required' + +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "\`nvm_make_alias foo\` did not error with '$EXPECTED_OUTPUT'; got '$OUTPUT'" +[ "$EXIT_CODE" -eq 2 ] || die "\`nvm_make_alias foo\` did not exit with 2, got '$EXIT_CODE'" diff --git a/test/fast/Unit tests/nvm_print_alias_path b/test/fast/Unit tests/nvm_print_alias_path new file mode 100755 index 0000000..14f439a --- /dev/null +++ b/test/fast/Unit tests/nvm_print_alias_path @@ -0,0 +1,44 @@ +#!/bin/sh +. ../../common.sh + +die () { echo $@ ; cleanup ; exit 1; } + +cleanup () { + unset -f nvm_alias nvm_version +} + +. ../../../nvm.sh + +NVM_ALIAS_DIR='path/to/the alias/dir' + +OUTPUT="$(nvm_print_alias_path 2>&1)" +EXPECTED_OUTPUT='An alias dir is required.' +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_print_alias_path' produced wrong output; got '$OUTPUT', expected '$EXPECTED_OUTPUT'" + +OUTPUT="$(nvm_print_alias_path "$NVM_ALIAS_DIR" 2>&1)" +EXPECTED_OUTPUT='An alias path is required.' +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_print_alias_path \"\$NVM_ALIAS_DIR\"' produced wrong output; got '$OUTPUT', expected '$EXPECTED_OUTPUT'" + +nvm_alias() { + echo '' +} + +OUTPUT="$(nvm_print_alias_path "$NVM_ALIAS_DIR" foo | strip_colors)" +EXPECTED_OUTPUT='' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_print_alias_path \"\$NVM_ALIAS_DIR\" foo' should produce no output when nvm_alias does not; got '$OUTPUT'" + +EXIT_CODE="$(nvm_print_alias_path "$NVM_ALIAS_DIR" foo >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = '0' ] || die "'nvm_print_alias_path \"\$NVM_ALIAS_DIR\" foo' should exit zero when nvm_alias produces no output; got $EXIT_CODE" + +nvm_alias() { + echo "\"$1\"" +} +nvm_version() { + echo "v$1" +} + +OUTPUT="$(nvm_print_alias_path "$NVM_ALIAS_DIR" "$NVM_ALIAS_DIR/blah" | strip_colors)" +EXPECTED_OUTPUT='blah -> "blah" (-> v"blah")' +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_print_alias_path \"\$NVM_ALIAS_DIR\" \"\$NVM_ALIAS_DIR/blah\"' should strip alias dir and print nvm_alias output; got '$OUTPUT', expected '$EXPECTED_OUTPUT'" + +cleanup diff --git a/test/fast/Unit tests/nvm_print_default_alias b/test/fast/Unit tests/nvm_print_default_alias new file mode 100755 index 0000000..1785756 --- /dev/null +++ b/test/fast/Unit tests/nvm_print_default_alias @@ -0,0 +1,38 @@ +#!/bin/sh +. ../../common.sh + +die () { echo $@ ; cleanup ; exit 1; } + +cleanup () { + unset -f nvm_print_implicit_alias nvm_version +} + +. ../../../nvm.sh + +nvm_print_implicit_alias() { + echo '' +} + +OUTPUT="$(nvm_print_default_alias 2>&1)" +EXPECTED_OUTPUT='A default alias is required.' +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_print_default_alias' produced wrong output; got '$OUTPUT', expected '$EXPECTED_OUTPUT'" + +OUTPUT="$(nvm_print_default_alias foo | strip_colors)" +EXPECTED_OUTPUT='' +[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "'nvm_print_default_alias foo' should produce no output when nvm_print_implicit_alias does not; got '$OUTPUT'" + +EXIT_CODE="$(nvm_print_default_alias foo >/dev/null 2>&1 ; echo $?)" +[ "$EXIT_CODE" = '0' ] || die "'nvm_print_default_alias foo' should exit zero when nvm_print_implicit_alias produces no output; got $EXIT_CODE" + +nvm_print_implicit_alias() { + echo "\"$1-$2\"" +} +nvm_version() { + echo "v$1" +} + +OUTPUT="$(nvm_print_default_alias blah | strip_colors)" +EXPECTED_OUTPUT='blah -> "local-blah" (-> v"local-blah") (default)' +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_print_default_alias blah' should strip alias dir and print nvm_print_implicit_alias output; got '$OUTPUT', expected '$EXPECTED_OUTPUT'" + +cleanup diff --git a/test/fast/Unit tests/nvm_version_path b/test/fast/Unit tests/nvm_version_path index 547ceb8..b8ae685 100755 --- a/test/fast/Unit tests/nvm_version_path +++ b/test/fast/Unit tests/nvm_version_path @@ -4,7 +4,10 @@ die () { echo $@ ; exit 1; } . ../../../nvm.sh -[ "$(nvm_version_path foo)" = "$NVM_DIR/foo" ] || die '"nvm_version_path foo" did not return correct location' +OUTPUT="$(nvm_version_path foo)" +EXPECTED_OUTPUT="$NVM_DIR/foo" +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "'nvm_version_path foo' did not return correct location; expected '$EXPECTED_OUTPUT', got '$OUTPUT'" + [ "$(nvm_version_path 2>&1)" = "version is required" ] || die '"nvm_version_path" did not error out' [ "$(nvm_version_path v0.11.0)" = "$NVM_DIR/v0.11.0" ] || die 'old version has the wrong path' [ "$(nvm_version_path v0.12.0)" = "$NVM_DIR/versions/node/v0.12.0" ] || die 'new version has the wrong path' diff --git "a/test/slow/nvm exec/Preamble works and respects \"silent\" flag" "b/test/slow/nvm exec/Preamble works and respects \"silent\" flag" new file mode 100755 index 0000000..a4153ab --- /dev/null +++ "b/test/slow/nvm exec/Preamble works and respects \"silent\" flag" @@ -0,0 +1,31 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +. ../../../nvm.sh + +nvm use 0.10 +NPM_VERSION_TEN="$(npm --version)" +NODE_VERSION_TEN="$(node --version)" + +nvm use 1.0.0 && [ "$(node --version)" = "v1.0.0" ] || die "\`nvm use\` failed!" +NPM_VERSION_ONE="$(npm --version)" + +OUTPUT="$(nvm exec 0.10 npm --version)" +EXPECTED_OUTPUT="Running node ${NODE_VERSION_TEN} (npm v${NPM_VERSION_TEN}) +${NPM_VERSION_TEN}" +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "\`nvm exec\` failed to report node preamble; expected '$EXPECTED_OUTPUT', got '$OUTPUT'" + +OUTPUT="$(nvm exec --silent 0.10 npm --version | head -1)" +EXPECTED_OUTPUT="${NPM_VERSION_TEN}" +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "\`nvm exec --silent\` failed to node suppress preamble; expected '$EXPECTED_OUTPUT', got '$OUTPUT'" + +OUTPUT="$(nvm exec 1 npm --version)" +EXPECTED_OUTPUT="Running io.js v1.0.0 (npm v${NPM_VERSION_ONE}) +${NPM_VERSION_ONE}" +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "\`nvm exec\` failed to report io.js preamble; expected '$EXPECTED_OUTPUT', got '$OUTPUT'" + +OUTPUT="$(nvm exec --silent 1 npm --version | head -1)" +EXPECTED_OUTPUT="${NPM_VERSION_ONE}" +[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "\`nvm exec --silent\` failed to suppress io.js preamble; expected '$EXPECTED_OUTPUT', got '$OUTPUT'" + diff --git "a/test/slow/nvm exec/Running \"nvm exec 0.x\" should work" "b/test/slow/nvm exec/Running \"nvm exec 0.x\" should work" index bf036cf..537fafe 100755 --- "a/test/slow/nvm exec/Running \"nvm exec 0.x\" should work" +++ "b/test/slow/nvm exec/Running \"nvm exec 0.x\" should work" @@ -8,7 +8,7 @@ nvm use 0.10 NPM_VERSION_TEN="$(npm --version)" TEST_STRING="foo bar" -nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!" +nvm use 1.0.0 && [ "$(node --version)" = "v1.0.0" ] || die "\`nvm use\` failed!" [ "$(nvm exec 0.10 npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "`nvm exec` failed to run with the correct version" diff --git "a/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version" "b/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version" index 203cd9a..3cc0cb8 100755 --- "a/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version" +++ "b/test/slow/nvm exec/Running \"nvm exec\" should pick up .nvmrc version" @@ -7,7 +7,7 @@ die () { echo $@ ; exit 1; } nvm use 0.10.7 NPM_VERSION_TEN="$(npm --version)" -nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!" +nvm use 1.0.0 && [ "$(node --version)" = "v1.0.0" ] || die "\`nvm use\` failed!" echo "0.10.7" > .nvmrc diff --git a/test/slow/nvm exec/setup_dir b/test/slow/nvm exec/setup_dir index a5fc4bc..d858b23 100755 --- a/test/slow/nvm exec/setup_dir +++ b/test/slow/nvm exec/setup_dir @@ -2,7 +2,7 @@ . ../../../nvm.sh nvm install 0.10.7 -nvm install 0.11.7 +nvm install 1.0.0 if [ -f ".nvmrc" ]; then mv .nvmrc .nvmrc.bak diff --git a/test/slow/nvm exec/teardown_dir b/test/slow/nvm exec/teardown_dir index 789456c..d9e0dc6 100755 --- a/test/slow/nvm exec/teardown_dir +++ b/test/slow/nvm exec/teardown_dir @@ -3,7 +3,7 @@ . ../../../nvm.sh nvm deactivate nvm uninstall v0.10.7 -nvm uninstall v0.11.7 +nvm uninstall v1.0.0 rm .nvmrc diff --git "a/test/slow/nvm uninstall/Running \"nvm uninstall 0.12.6\" uninstalls v0.12.6" "b/test/slow/nvm uninstall/Running \"nvm uninstall 0.12.6\" uninstalls v0.12.6" new file mode 100755 index 0000000..9af0171 --- /dev/null +++ "b/test/slow/nvm uninstall/Running \"nvm uninstall 0.12.6\" uninstalls v0.12.6" @@ -0,0 +1,28 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +# Source nvm +. ../../../nvm.sh + +# Version to install/uninstall +NVM_TEST_VERSION=0.12.6 + +# Make sure it's not already here +[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION + +# Install it +nvm install $NVM_TEST_VERSION + +# Make sure it installed +nvm ls | grep "$NVM_TEST_VERSION" || die "Failed to install node" + +# Switch to another version so we can uninstall +nvm use 0.12.7 + +# Uninstall it +nvm uninstall $NVM_TEST_VERSION + +# Make sure it uninstalled +nvm ls | grep "$NVM_TEST_VERSION" +[ "$?" != "0" ] || die "Failed to uninstall node" diff --git "a/test/slow/nvm uninstall/Running \"nvm uninstall\" with incorrect file permissions fails nicely" "b/test/slow/nvm uninstall/Running \"nvm uninstall\" with incorrect file permissions fails nicely" new file mode 100755 index 0000000..0939d95 --- /dev/null +++ "b/test/slow/nvm uninstall/Running \"nvm uninstall\" with incorrect file permissions fails nicely" @@ -0,0 +1,30 @@ +#!/bin/sh + +die () { echo $@ ; exit 1; } + +# Source nvm +. ../../../nvm.sh + +# Version to install/uninstall +NVM_TEST_VERSION=5.10.1 + +# Make sure it's not already here +[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION + +# Install it +nvm install $NVM_TEST_VERSION + +# Make sure it installed +nvm ls | grep "$NVM_TEST_VERSION" || die "Failed to install node" + +# Install global module as root +npm_path=$(which npm) +sudo -n "$npm_path" install jspm -g || die 'either sudo failed, or `npm install jspm -g` failed`' + +# Switch to another version so we can uninstall +nvm use 0.12.7 + +# Attempt to uninstall it +RETURN_MESSAGE="$(nvm uninstall $NVM_TEST_VERSION 2>&1)" +CHECK_FOR="Cannot uninstall, incorrect permissions on installation folder" +test "${RETURN_MESSAGE#*$CHECK_FOR}" != "$RETURN_MESSAGE" || die "Failed to show error message" diff --git a/test/slow/nvm uninstall/setup_dir b/test/slow/nvm uninstall/setup_dir new file mode 100755 index 0000000..f385d98 --- /dev/null +++ b/test/slow/nvm uninstall/setup_dir @@ -0,0 +1,4 @@ +#!/bin/sh + +. ../../../nvm.sh +nvm install 0.12.7 diff --git a/test/slow/nvm uninstall/teardown_dir b/test/slow/nvm uninstall/teardown_dir new file mode 100755 index 0000000..f505f21 --- /dev/null +++ b/test/slow/nvm uninstall/teardown_dir @@ -0,0 +1,5 @@ +#!/bin/sh + +. ../../../nvm.sh +nvm uninstall 0.12.7 +nvm deactivate diff --git a/test/sourcing/Sourcing nvm.sh should use the default if available b/test/sourcing/Sourcing nvm.sh should use the default if available index 57cb839..03b2fe3 100755 --- a/test/sourcing/Sourcing nvm.sh should use the default if available +++ b/test/sourcing/Sourcing nvm.sh should use the default if available @@ -5,13 +5,14 @@ die () { echo $@ ; exit 1; } echo '0.10.1' > ../../alias/default || die 'creation of default alias failed' . ../../nvm.sh || die 'sourcing returned nonzero exit code' +. ../common.sh -NVM_LS_CURRENT="$(nvm ls current | \grep -o v0.10.1)" +NVM_LS_CURRENT="$(nvm ls current | strip_colors | \grep -o v0.10.1)" [ "_$NVM_LS_CURRENT" = '_v0.10.1' ] || die "'nvm ls current' did not return '-> v0.10.1', got '$NVM_LS_CURRENT'" # NVM_LS_CURRENT_COLORED="$(nvm ls current | sed -n l)" -NVM_ALIAS_DEFAULT="$(nvm alias default)" +NVM_ALIAS_DEFAULT="$(nvm alias default | strip_colors)" [ "_$NVM_ALIAS_DEFAULT" = "_default -> 0.10.1 (-> v0.10.1)" ] \ || die "'nvm alias default did not return 'default -> 0.10.1 (-> v0.10.1)', got '$NVM_ALIAS_DEFAULT'" diff --git a/test/sourcing/Sourcing nvm.sh with --install should install the default b/test/sourcing/Sourcing nvm.sh with --install should install the default index e25ddf0..3b6fbaf 100755 --- a/test/sourcing/Sourcing nvm.sh with --install should install the default +++ b/test/sourcing/Sourcing nvm.sh with --install should install the default @@ -1,4 +1,5 @@ #!/bin/sh +. ../common.sh die () { echo $@ ; exit 1; } supports_source_options () { @@ -23,10 +24,10 @@ nvm_version 0.10.2 >/dev/null 2>&1 || die "v0.10.2 not installed: $(nvm ls)" [ "_$EXIT_CODE" = "_0" ] || die "sourcing returned nonzero exit code: $EXIT_CODE" -NVM_LS_CURRENT="$(nvm ls current | \grep -o v0.10.2)" +NVM_LS_CURRENT="$(nvm ls current | strip_colors | command grep -o v0.10.2)" [ "_$NVM_LS_CURRENT" = '_v0.10.2' ] || die "'nvm ls current' did not return '-> v0.10.2', got '$NVM_LS_CURRENT'" -NVM_ALIAS_DEFAULT="$(nvm alias default)" +NVM_ALIAS_DEFAULT="$(nvm alias default | strip_colors)" [ "_$NVM_ALIAS_DEFAULT" = "_default -> 0.10.2 (-> v0.10.2)" ] \ || die "'nvm alias default did not return 'default -> 0.10.2 (-> v0.10.2)', got '$NVM_ALIAS_DEFAULT'" diff --git a/update_test_mocks.sh b/update_test_mocks.sh new file mode 100755 index 0000000..10eaed6 --- /dev/null +++ b/update_test_mocks.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e + +echo 'Updating test mocks...' + +MOCKS_DIR="$PWD/test/fast/Unit tests/mocks" + +echo "creating $MOCKS_DIR" +mkdir -p MOCKS_DIR + +. "$NVM_DIR/nvm.sh" + +nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote.txt" +nvm_ls_remote_iojs > "$MOCKS_DIR/nvm_ls_remote_iojs.txt" +nvm_download -L -s "$NVM_NODEJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/nodejs.org-dist-index.tab" +nvm_download -L -s "$NVM_IOJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/iojs.org-dist-index.tab" + +echo "done! Don't forget to git commit them."