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."