Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96c96ec714 | ||
|
|
475b8bd6b4 | ||
|
|
5e805905ca | ||
|
|
2dec01da9c | ||
|
|
63672641a5 | ||
|
|
94bba31de3 | ||
|
|
f70530ef18 | ||
|
|
ec33e8b720 | ||
|
|
a4f89c6223 | ||
|
|
517817f1a3 | ||
|
|
a6f5eff0f3 | ||
|
|
0aac462b15 | ||
|
|
bb2fe618cb | ||
|
|
eb5cecc970 | ||
|
|
36f933984d | ||
|
|
54d2d70048 | ||
|
|
e1009149c9 | ||
|
|
153ee6887e | ||
|
|
295f2b7db4 | ||
|
|
356ac7a697 | ||
|
|
64c88ce62e | ||
|
|
4612d8d827 | ||
|
|
6644f33a77 | ||
|
|
cbf0f12aac | ||
|
|
de93dc46d0 | ||
|
|
7ea15a7618 | ||
|
|
6a114eddcc | ||
|
|
e4149c380b | ||
|
|
caa69bc500 | ||
|
|
e01bcb740b | ||
|
|
276d55c912 | ||
|
|
0dc177bf9c | ||
|
|
c34502ebc2 | ||
|
|
3d764e6833 | ||
|
|
a26ef4f1be | ||
|
|
d68f667464 | ||
|
|
c966204cd6 | ||
|
|
d72b35b7b8 | ||
|
|
d50a0f46e9 | ||
|
|
82393f5b36 | ||
|
|
a1a8e5a51b | ||
|
|
108f630732 | ||
|
|
96e73825bd | ||
|
|
9fc20bb14b | ||
|
|
3401d15a18 | ||
|
|
394e8505d9 | ||
|
|
fc86834e29 | ||
|
|
609d9ee4ea | ||
|
|
70370a857f | ||
|
|
65a986c633 | ||
|
|
3cc5d6af67 | ||
|
|
999c4111c1 | ||
|
|
3d69cf7437 | ||
|
|
207521d54b | ||
|
|
7750253bca | ||
|
|
14b23bfa95 | ||
|
|
bf7bd3e793 | ||
|
|
2b63f37f8d | ||
|
|
230b479648 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.sh eol=lf
|
||||
@@ -1,17 +1,16 @@
|
||||
language: c # defaults to ruby
|
||||
addons:
|
||||
apt_packages:
|
||||
- zsh
|
||||
- ksh
|
||||
install:
|
||||
- sudo apt-get install zsh -y # ksh
|
||||
- (mkdir /tmp/urchin && cd /tmp/urchin && curl -s "$(curl -s https://registry.npmjs.com/urchin | grep -Eo '"tarball":\s*"[^"]+"' | tail -n 1 | awk -F\" '{ print $4 }')" -O && tar -x -f urchin*)
|
||||
- chmod +x /tmp/urchin/package/urchin
|
||||
- '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y'
|
||||
script:
|
||||
- NVM_DIR=$TRAVIS_BUILD_DIR make TEST_SUITE=$TEST_SUITE URCHIN=/tmp/urchin/package/urchin test-$SHELL
|
||||
env:
|
||||
- SHELL=sh TEST_SUITE=install_script
|
||||
- SHELL=dash TEST_SUITE=install_script
|
||||
- SHELL=bash TEST_SUITE=install_script
|
||||
- SHELL=zsh TEST_SUITE=install_script
|
||||
# - SHELL=ksh TEST_SUITE=install_script
|
||||
- SHELL=sh TEST_SUITE=fast
|
||||
- SHELL=dash TEST_SUITE=fast
|
||||
- SHELL=bash TEST_SUITE=fast
|
||||
|
||||
@@ -16,11 +16,11 @@ Note: `nvm` does not support [Fish] either (see [#303](https://github.com/creati
|
||||
|
||||
To install you could use the [install script][2] using cURL:
|
||||
|
||||
curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash
|
||||
|
||||
or Wget:
|
||||
|
||||
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash
|
||||
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash
|
||||
|
||||
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
|
||||
|
||||
@@ -39,7 +39,7 @@ Or if you have `git` installed, then just clone it, and check out the latest ver
|
||||
|
||||
To activate nvm, you need to source it from your shell:
|
||||
|
||||
source ~/.nvm/nvm.sh
|
||||
. ~/.nvm/nvm.sh
|
||||
|
||||
I always add this line to my `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login.
|
||||
Often I also put in a line to use a specific version of node.
|
||||
@@ -187,6 +187,20 @@ nvm uninstall
|
||||
$ nvm uninstall [tab][tab]
|
||||
my_alias default v0.6.21 v0.8.26 v0.10.28
|
||||
|
||||
## Compatibility Issues
|
||||
`nvm` will encounter some issues if you have some non-default settings set. (see [#606](/../../issues/606))
|
||||
The following are known to cause issues:
|
||||
|
||||
Inside `~/.npmrc`
|
||||
```
|
||||
prefix='some/path'
|
||||
```
|
||||
Environment Variables:
|
||||
```
|
||||
$NPM_CONFIG_PREFIX
|
||||
$PREFIX
|
||||
```
|
||||
|
||||
## Problems
|
||||
|
||||
If you try to install a node version and the installation fails, be sure to delete the node downloads from src (~/.nvm/src/) or you might get an error when trying to reinstall them again or you might get an error like the following:
|
||||
@@ -206,7 +220,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But
|
||||
nvm install -s 0.8.6
|
||||
|
||||
[1]: https://github.com/creationix/nvm.git
|
||||
[2]: https://github.com/creationix/nvm/blob/v0.24.0/install.sh
|
||||
[2]: https://github.com/creationix/nvm/blob/v0.25.2/install.sh
|
||||
[3]: https://travis-ci.org/creationix/nvm
|
||||
[Urchin]: https://github.com/scraperwiki/urchin
|
||||
[Fish]: http://fishshell.com
|
||||
|
||||
15
install.sh
15
install.sh
@@ -2,6 +2,8 @@
|
||||
|
||||
set -e
|
||||
|
||||
{ # this ensures the entire script is downloaded #
|
||||
|
||||
nvm_has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
}
|
||||
@@ -11,7 +13,7 @@ if [ -z "$NVM_DIR" ]; then
|
||||
fi
|
||||
|
||||
nvm_latest_version() {
|
||||
echo "v0.24.0"
|
||||
echo "v0.25.2"
|
||||
}
|
||||
|
||||
#
|
||||
@@ -42,7 +44,7 @@ nvm_source() {
|
||||
|
||||
nvm_download() {
|
||||
if nvm_has "curl"; then
|
||||
curl $*
|
||||
curl -q $*
|
||||
elif nvm_has "wget"; then
|
||||
# Emulate curl with wget
|
||||
ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \
|
||||
@@ -71,7 +73,12 @@ install_nvm_from_git() {
|
||||
fi
|
||||
cd "$NVM_DIR" && command git checkout --quiet $(nvm_latest_version)
|
||||
if [ ! -z "$(cd "$NVM_DIR" && git show-ref refs/heads/master)" ]; then
|
||||
cd "$NVM_DIR" && command git branch --quiet -D master >/dev/null 2>&1
|
||||
if git branch --quiet 2>/dev/null; then
|
||||
cd "$NVM_DIR" && command git branch --quiet -D master >/dev/null 2>&1
|
||||
else
|
||||
echo >&2 "Your version of git is out of date. Please update it!"
|
||||
cd "$NVM_DIR" && command git branch -D master >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
return
|
||||
}
|
||||
@@ -236,3 +243,5 @@ nvm_reset() {
|
||||
}
|
||||
|
||||
[ "_$NVM_ENV" = "_testing" ] || nvm_do_install
|
||||
|
||||
} # this ensures the entire script is downloaded #
|
||||
|
||||
278
nvm.sh
278
nvm.sh
@@ -6,6 +6,8 @@
|
||||
# Implemented by Tim Caswell <tim@creationix.com>
|
||||
# with much bash help from Matthew Ranney
|
||||
|
||||
{ # this ensures the entire script is downloaded #
|
||||
|
||||
NVM_SCRIPT_SOURCE="$_"
|
||||
|
||||
nvm_has() {
|
||||
@@ -20,7 +22,7 @@ nvm_is_alias() {
|
||||
nvm_get_latest() {
|
||||
local NVM_LATEST_URL
|
||||
if nvm_has "curl"; then
|
||||
NVM_LATEST_URL="$(curl -w "%{url_effective}\n" -L -s -S http://latest.nvm.sh -o /dev/null)"
|
||||
NVM_LATEST_URL="$(curl -q -w "%{url_effective}\n" -L -s -S http://latest.nvm.sh -o /dev/null)"
|
||||
elif nvm_has "wget"; then
|
||||
NVM_LATEST_URL="$(wget http://latest.nvm.sh --server-response -O /dev/null 2>&1 | awk '/^ Location: /{DEST=$2} END{ print DEST }')"
|
||||
else
|
||||
@@ -37,7 +39,7 @@ nvm_get_latest() {
|
||||
|
||||
nvm_download() {
|
||||
if nvm_has "curl"; then
|
||||
curl $*
|
||||
curl -q $*
|
||||
elif nvm_has "wget"; then
|
||||
# Emulate curl with wget
|
||||
ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \
|
||||
@@ -58,6 +60,12 @@ nvm_has_system_iojs() {
|
||||
[ "$(nvm deactivate >/dev/null 2>&1 && command -v iojs)" != '' ]
|
||||
}
|
||||
|
||||
nvm_print_npm_version() {
|
||||
if nvm_has "npm"; then
|
||||
npm --version 2>/dev/null | command xargs printf " (npm v%s)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Make zsh glob matching behave same as bash
|
||||
# This fixes the "zsh: no matches found" errors
|
||||
if nvm_has "unsetopt"; then
|
||||
@@ -222,8 +230,10 @@ nvm_version() {
|
||||
return $?
|
||||
fi
|
||||
|
||||
local NVM_NODE_PREFIX
|
||||
NVM_NODE_PREFIX="$(nvm_node_prefix)"
|
||||
case "_$PATTERN" in
|
||||
"_$(nvm_node_prefix)" | "_$(nvm_node_prefix)-")
|
||||
"_$NVM_NODE_PREFIX" | "_$NVM_NODE_PREFIX-")
|
||||
PATTERN="stable"
|
||||
;;
|
||||
esac
|
||||
@@ -259,14 +269,12 @@ nvm_remote_version() {
|
||||
}
|
||||
|
||||
nvm_remote_versions() {
|
||||
local NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
|
||||
local NVM_IOJS_PREFIX
|
||||
NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
|
||||
local PATTERN
|
||||
PATTERN="$1"
|
||||
if [ "_$PATTERN" = "_io.js" ]; then
|
||||
PATTERN="$NVM_IOJS_PREFIX"
|
||||
fi
|
||||
case "_$PATTERN" in
|
||||
"_$NVM_IOJS_PREFIX")
|
||||
"_$NVM_IOJS_PREFIX" | "_io.js")
|
||||
VERSIONS="$(nvm_ls_remote_iojs)"
|
||||
;;
|
||||
"_$(nvm_node_prefix)")
|
||||
@@ -307,7 +315,7 @@ nvm_is_valid_version() {
|
||||
}
|
||||
|
||||
nvm_normalize_version() {
|
||||
echo "$1" | command sed -e 's/^v//' | command awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
|
||||
echo "${1#v}" | command awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
|
||||
}
|
||||
|
||||
nvm_ensure_version_prefix() {
|
||||
@@ -324,8 +332,7 @@ nvm_format_version() {
|
||||
local VERSION
|
||||
VERSION="$(nvm_ensure_version_prefix "$1")"
|
||||
if [ "_$(nvm_num_version_groups "$VERSION")" != "_3" ]; then
|
||||
VERSION="$(echo "$VERSION" | command sed -e 's/\.*$/.0/')"
|
||||
nvm_format_version "$VERSION"
|
||||
nvm_format_version "${VERSION%.}.0"
|
||||
else
|
||||
echo "$VERSION"
|
||||
fi
|
||||
@@ -334,14 +341,16 @@ nvm_format_version() {
|
||||
nvm_num_version_groups() {
|
||||
local VERSION
|
||||
VERSION="$1"
|
||||
VERSION="${VERSION#v}"
|
||||
VERSION="${VERSION%.}"
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "0"
|
||||
return
|
||||
fi
|
||||
local NVM_NUM_DOTS
|
||||
NVM_NUM_DOTS=$(echo "$VERSION" | command sed -e 's/^v//' | command sed -e 's/\.$//' | command sed -e 's/[^\.]//g')
|
||||
NVM_NUM_DOTS=$(echo "$VERSION" | command sed -e 's/[^\.]//g')
|
||||
local NVM_NUM_GROUPS
|
||||
NVM_NUM_GROUPS=".$NVM_NUM_DOTS"
|
||||
NVM_NUM_GROUPS=".$NVM_NUM_DOTS" # add extra dot, since it's (n - 1) dots at this point
|
||||
echo "${#NVM_NUM_GROUPS}"
|
||||
}
|
||||
|
||||
@@ -478,7 +487,6 @@ nvm_resolve_local_alias() {
|
||||
VERSION="$(nvm_resolve_alias "$1")"
|
||||
EXIT_CODE=$?
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "N/A"
|
||||
return $EXIT_CODE
|
||||
fi
|
||||
if [ "_$VERSION" != "_∞" ]; then
|
||||
@@ -496,7 +504,8 @@ nvm_node_prefix() {
|
||||
}
|
||||
|
||||
nvm_is_iojs_version() {
|
||||
[ "_$(echo "$1" | cut -c1-5)" = "_iojs-" ]
|
||||
case "$1" in iojs-*) return 0 ;; esac
|
||||
return 1
|
||||
}
|
||||
|
||||
nvm_add_iojs_prefix() {
|
||||
@@ -509,7 +518,7 @@ nvm_strip_iojs_prefix() {
|
||||
if [ "_$1" = "_$NVM_IOJS_PREFIX" ]; then
|
||||
echo
|
||||
else
|
||||
echo "$1" | command sed "s/^$NVM_IOJS_PREFIX-//"
|
||||
echo "${1#"$NVM_IOJS_PREFIX"-}"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -546,7 +555,12 @@ nvm_ls() {
|
||||
;;
|
||||
esac
|
||||
# If it looks like an explicit version, don't do anything funny
|
||||
if [ "_$(echo "$PATTERN" | cut -c1-1)" = "_v" ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then
|
||||
local NVM_PATTERN_STARTS_WITH_V
|
||||
case $PATTERN in
|
||||
v*) NVM_PATTERN_STARTS_WITH_V=true ;;
|
||||
*) 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
|
||||
VERSIONS="$PATTERN"
|
||||
elif [ -d "$(nvm_version_path "$(nvm_add_iojs_prefix "$PATTERN")")" ]; then
|
||||
@@ -559,7 +573,7 @@ nvm_ls() {
|
||||
local NUM_VERSION_GROUPS
|
||||
NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
|
||||
if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
|
||||
PATTERN="$(echo "$PATTERN" | command sed -e 's/\.*$//g')."
|
||||
PATTERN="${PATTERN%.}."
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@@ -604,17 +618,20 @@ nvm_ls() {
|
||||
fi
|
||||
if [ -n "$NVM_DIRS_TO_SEARCH" ]; then
|
||||
VERSIONS="$(command find $NVM_DIRS_TO_SEARCH -maxdepth 1 -type d -name "$PATTERN*" \
|
||||
| command sed "s#$NVM_VERSION_DIR_IOJS/#"$NVM_IOJS_PREFIX"-#" \
|
||||
| command grep -v "$NVM_VERSION_DIR_IOJS" \
|
||||
| command sed "s#^$NVM_DIR/##" \
|
||||
| command grep -v -e '^versions$' \
|
||||
| command sed 's#^versions/##' \
|
||||
| sed -e "s/^v/$NVM_NODE_PREFIX-v/" \
|
||||
| sed -e "s#^\($NVM_IOJS_PREFIX\)[-/]v#\1.v#" | sed -e "s#^\($NVM_NODE_PREFIX\)[-/]v#\1.v#" \
|
||||
| command sed "
|
||||
s#$NVM_VERSION_DIR_IOJS/#$NVM_IOJS_PREFIX-#;
|
||||
\#$NVM_VERSION_DIR_IOJS# d;
|
||||
s#^$NVM_DIR/##;
|
||||
\#^versions\$# d;
|
||||
s#^versions/##;
|
||||
s#^v#$NVM_NODE_PREFIX-v#;
|
||||
s#^\($NVM_IOJS_PREFIX\)[-/]v#\1.v#;
|
||||
s#^\($NVM_NODE_PREFIX\)[-/]v#\1.v#" \
|
||||
| command sort -t. -u -k 2.2,2n -k 3,3n -k 4,4n \
|
||||
| command sort -s -t- -k1.1,1.1 \
|
||||
| command sed "s/^\($NVM_IOJS_PREFIX\)\./\1-/" \
|
||||
| command sed "s/^$NVM_NODE_PREFIX\.//")"
|
||||
| command sed "
|
||||
s/^\($NVM_IOJS_PREFIX\)\./\1-/;
|
||||
s/^$NVM_NODE_PREFIX\.//")"
|
||||
fi
|
||||
|
||||
if [ $ZHS_HAS_SHWORDSPLIT_UNSET -eq 1 ] && nvm_has "unsetopt"; then
|
||||
@@ -672,9 +689,10 @@ nvm_ls_remote_iojs() {
|
||||
PATTERN=".*"
|
||||
fi
|
||||
VERSIONS="$(nvm_download -L -s $NVM_IOJS_ORG_VERSION_LISTING -o - \
|
||||
| command sed 1d \
|
||||
| command sed "s/^/$(nvm_iojs_prefix)-/" \
|
||||
| command cut -f1 \
|
||||
| command sed "
|
||||
1d;
|
||||
s/^/$(nvm_iojs_prefix)-/;
|
||||
s/[[:blank:]].*//" \
|
||||
| command grep -w "$PATTERN" \
|
||||
| command sort)"
|
||||
if [ -z "$VERSIONS" ]; then
|
||||
@@ -854,16 +872,35 @@ nvm_get_os() {
|
||||
|
||||
nvm_get_arch() {
|
||||
local NVM_UNAME
|
||||
NVM_UNAME="$(uname -a)"
|
||||
NVM_UNAME="$(uname -m)"
|
||||
local NVM_ARCH
|
||||
case "$NVM_UNAME" in
|
||||
*x86_64*) NVM_ARCH=x64 ;;
|
||||
*i*86*) NVM_ARCH=x86 ;;
|
||||
*) NVM_ARCH="$(uname -m)" ;;
|
||||
x86_64) NVM_ARCH="x64" ;;
|
||||
i*86) NVM_ARCH="x86" ;;
|
||||
*) NVM_ARCH="$NVM_UNAME" ;;
|
||||
esac
|
||||
echo "$NVM_ARCH"
|
||||
}
|
||||
|
||||
nvm_ensure_default_set() {
|
||||
local VERSION
|
||||
VERSION="$1"
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo 'nvm_ensure_default_set: a version is required' >&2
|
||||
return 1
|
||||
fi
|
||||
if nvm_alias default >/dev/null 2>&1; then
|
||||
# default already set
|
||||
return 0
|
||||
fi
|
||||
local OUTPUT
|
||||
OUTPUT="$(nvm alias default "$VERSION")"
|
||||
local EXIT_CODE
|
||||
EXIT_CODE="$?"
|
||||
echo "Creating default alias: $OUTPUT"
|
||||
return $EXIT_CODE
|
||||
}
|
||||
|
||||
nvm_install_iojs_binary() {
|
||||
local PREFIXED_VERSION
|
||||
PREFIXED_VERSION="$1"
|
||||
@@ -894,9 +931,16 @@ nvm_install_iojs_binary() {
|
||||
tmpdir="$NVM_DIR/bin/iojs-${t}"
|
||||
local tmptarball
|
||||
tmptarball="$tmpdir/iojs-${t}.tar.gz"
|
||||
local NVM_INSTALL_ERRORED
|
||||
command mkdir -p "$tmpdir" && \
|
||||
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";
|
||||
fi
|
||||
if (
|
||||
command mkdir -p "$tmpdir" && \
|
||||
nvm_download -L -C - --progress-bar $url -o "$tmptarball" && \
|
||||
[ "$NVM_INSTALL_ERRORED" != true ] && \
|
||||
echo "WARNING: checksums are currently disabled for io.js" >&2 && \
|
||||
# nvm_checksum "$tmptarball" $sum && \
|
||||
command tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
|
||||
@@ -906,7 +950,7 @@ nvm_install_iojs_binary() {
|
||||
); then
|
||||
return 0
|
||||
else
|
||||
echo "Binary download failed, trying source." >&2
|
||||
echo >&2 "Binary download failed, trying source." >&2
|
||||
command rm -rf "$tmptarball" "$tmpdir"
|
||||
return 1
|
||||
fi
|
||||
@@ -938,7 +982,7 @@ nvm_install_node_binary() {
|
||||
if nvm_binary_available "$VERSION"; then
|
||||
local NVM_ARCH
|
||||
NVM_ARCH="$(nvm_get_arch)"
|
||||
if [ $NVM_ARCH = "armv6l" ]; then
|
||||
if [ $NVM_ARCH = "armv6l" ] || [ $NVM_ARCH = "armv7l" ]; then
|
||||
NVM_ARCH="arm-pi"
|
||||
fi
|
||||
t="$VERSION-$NVM_OS-$NVM_ARCH"
|
||||
@@ -948,9 +992,16 @@ nvm_install_node_binary() {
|
||||
tmpdir="$NVM_DIR/bin/node-${t}"
|
||||
local tmptarball
|
||||
tmptarball="$tmpdir/node-${t}.tar.gz"
|
||||
local NVM_INSTALL_ERRORED
|
||||
command mkdir -p "$tmpdir" && \
|
||||
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";
|
||||
fi
|
||||
if (
|
||||
command mkdir -p "$tmpdir" && \
|
||||
nvm_download -L -C - --progress-bar $url -o "$tmptarball" && \
|
||||
[ "$NVM_INSTALL_ERRORED" != true ] && \
|
||||
nvm_checksum "$tmptarball" $sum && \
|
||||
command tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
|
||||
command rm -f "$tmptarball" && \
|
||||
@@ -959,7 +1010,7 @@ nvm_install_node_binary() {
|
||||
); then
|
||||
return 0
|
||||
else
|
||||
echo "Binary download failed, trying source." >&2
|
||||
echo >&2 "Binary download failed, trying source."
|
||||
command rm -rf "$tmptarball" "$tmpdir"
|
||||
return 1
|
||||
fi
|
||||
@@ -971,10 +1022,8 @@ nvm_install_node_binary() {
|
||||
nvm_install_node_source() {
|
||||
local VERSION
|
||||
VERSION="$1"
|
||||
local REINSTALL_PACKAGES_FROM
|
||||
REINSTALL_PACKAGES_FROM="$2"
|
||||
local ADDITIONAL_PARAMETERS
|
||||
ADDITIONAL_PARAMETERS="$3"
|
||||
ADDITIONAL_PARAMETERS="$2"
|
||||
|
||||
if [ -n "$ADDITIONAL_PARAMETERS" ]; then
|
||||
echo "Additional options while compiling: $ADDITIONAL_PARAMETERS"
|
||||
@@ -1020,9 +1069,6 @@ nvm_install_node_source() {
|
||||
$make $MAKE_CXX install
|
||||
)
|
||||
then
|
||||
if nvm use "$VERSION" && [ ! -z "$REINSTALL_PACKAGES_FROM" ] && [ "_$REINSTALL_PACKAGES_FROM" != "_N/A" ]; then
|
||||
nvm reinstall-packages "$REINSTALL_PACKAGES_FROM"
|
||||
fi
|
||||
if ! nvm_has "npm" ; then
|
||||
echo "Installing npm..."
|
||||
if nvm_version_greater 0.2.0 "$VERSION"; then
|
||||
@@ -1095,6 +1141,17 @@ nvm() {
|
||||
echo
|
||||
;;
|
||||
|
||||
"debug" )
|
||||
echo >&2 "\$SHELL: $SHELL"
|
||||
echo >&2 "\$NVM_DIR: $(echo $NVM_DIR | sed "s#$HOME#\$HOME#g")"
|
||||
for NVM_DEBUG_COMMAND in 'nvm current' 'which node' 'which iojs' 'which npm' 'npm config get prefix' 'npm root -g'
|
||||
do
|
||||
local NVM_DEBUG_OUTPUT="$($NVM_DEBUG_COMMAND | sed "s#$NVM_DIR#\$NVM_DIR#g")"
|
||||
echo >&2 "$NVM_DEBUG_COMMAND: ${NVM_DEBUG_OUTPUT}"
|
||||
done
|
||||
return 42
|
||||
;;
|
||||
|
||||
"install" | "i" )
|
||||
local nobinary
|
||||
local version_not_provided
|
||||
@@ -1112,8 +1169,8 @@ nvm() {
|
||||
version_not_provided=1
|
||||
nvm_rc_version
|
||||
if [ -z "$NVM_RC_VERSION" ]; then
|
||||
nvm help
|
||||
return
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1149,15 +1206,19 @@ nvm() {
|
||||
|
||||
while [ $# -ne 0 ]
|
||||
do
|
||||
if [ "_$(echo "$1" | command cut -c 1-26)" = "_--reinstall-packages-from=" ]; then
|
||||
PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 27-)"
|
||||
REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")"
|
||||
elif [ "_$(echo "$1" | command cut -c 1-21)" = "_--copy-packages-from=" ]; then
|
||||
PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 22-)"
|
||||
REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")"
|
||||
else
|
||||
ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1"
|
||||
fi
|
||||
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")"
|
||||
;;
|
||||
--copy-packages-from=*)
|
||||
PROVIDED_REINSTALL_PACKAGES_FROM="$(echo "$1" | command cut -c 22-)"
|
||||
REINSTALL_PACKAGES_FROM="$(nvm_version "$PROVIDED_REINSTALL_PACKAGES_FROM")"
|
||||
;;
|
||||
*)
|
||||
ADDITIONAL_PARAMETERS="$ADDITIONAL_PARAMETERS $1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
@@ -1191,34 +1252,38 @@ nvm() {
|
||||
# io.js does not have a SunOS binary
|
||||
nobinary=1
|
||||
fi
|
||||
local NVM_INSTALL_SUCCESS
|
||||
# skip binary install if "nobinary" option specified.
|
||||
if [ $nobinary -ne 1 ] && nvm_binary_available "$VERSION"; then
|
||||
local NVM_INSTALL_SUCCESS
|
||||
if [ "$NVM_IOJS" = true ] && nvm_install_iojs_binary "$VERSION" "$REINSTALL_PACKAGES_FROM"; then
|
||||
NVM_INSTALL_SUCCESS=true
|
||||
elif [ "$NVM_IOJS" != true ] && nvm_install_node_binary "$VERSION" "$REINSTALL_PACKAGES_FROM"; then
|
||||
NVM_INSTALL_SUCCESS=true
|
||||
fi
|
||||
fi
|
||||
if [ "$NVM_INSTALL_SUCCESS" != true ]; then
|
||||
if [ "$NVM_IOJS" = true ]; then
|
||||
# nvm_install_iojs_source "$VERSION" "$ADDITIONAL_PARAMETERS"
|
||||
echo "Installing iojs from source is not currently supported" >&2
|
||||
return 105
|
||||
elif nvm_install_node_source "$VERSION" "$ADDITIONAL_PARAMETERS"; then
|
||||
NVM_INSTALL_SUCCESS=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$NVM_INSTALL_SUCCESS" = true ] \
|
||||
&& nvm use "$VERSION" \
|
||||
&& [ ! -z "$REINSTALL_PACKAGES_FROM" ] \
|
||||
if [ "$NVM_INSTALL_SUCCESS" = true ] && nvm use "$VERSION"; then
|
||||
if [ ! -z "$REINSTALL_PACKAGES_FROM" ] \
|
||||
&& [ "_$REINSTALL_PACKAGES_FROM" != "_N/A" ]; then
|
||||
nvm reinstall-packages "$REINSTALL_PACKAGES_FROM"
|
||||
fi
|
||||
return $?
|
||||
fi
|
||||
|
||||
if [ "$NVM_IOJS" = true ]; then
|
||||
# nvm_install_iojs_source "$VERSION" "$REINSTALL_PACKAGES_FROM" "$ADDITIONAL_PARAMETERS"
|
||||
echo "Installing iojs from source is not currently supported" >&2
|
||||
return 105
|
||||
else
|
||||
nvm_install_node_source "$VERSION" "$REINSTALL_PACKAGES_FROM" "$ADDITIONAL_PARAMETERS"
|
||||
fi
|
||||
return $?
|
||||
;;
|
||||
"uninstall" )
|
||||
[ $# -ne 2 ] && nvm help && return
|
||||
if [ $# -ne 2 ]; then
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
|
||||
local PATTERN
|
||||
PATTERN="$2"
|
||||
@@ -1298,11 +1363,6 @@ nvm() {
|
||||
fi
|
||||
;;
|
||||
"use" )
|
||||
if [ $# -eq 0 ]; then
|
||||
nvm help
|
||||
return 127
|
||||
fi
|
||||
|
||||
local PROVIDED_VERSION
|
||||
if [ $# -eq 1 ]; then
|
||||
nvm_rc_version
|
||||
@@ -1330,16 +1390,16 @@ nvm() {
|
||||
fi
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
nvm help
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
|
||||
if [ "_$VERSION" = '_system' ]; then
|
||||
if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then
|
||||
echo "Now using system version of node: $(node -v 2>/dev/null)."
|
||||
echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)"
|
||||
return
|
||||
elif nvm_has_system_iojs && nvm deactivate >/dev/null 2>&1; then
|
||||
echo "Now using system version of io.js: $(iojs --version 2>/dev/null)."
|
||||
echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)"
|
||||
return
|
||||
else
|
||||
echo "System version of node not found." >&2
|
||||
@@ -1350,6 +1410,8 @@ nvm() {
|
||||
return 8
|
||||
fi
|
||||
|
||||
# This nvm_ensure_version_installed call can be a performance bottleneck
|
||||
# on shell startup. Perhaps we can optimize it away or make it faster.
|
||||
nvm_ensure_version_installed "$PROVIDED_VERSION"
|
||||
EXIT_CODE=$?
|
||||
if [ "$EXIT_CODE" != "0" ]; then
|
||||
@@ -1381,9 +1443,9 @@ nvm() {
|
||||
command rm -f "$NVM_DIR/current" && ln -s "$NVM_VERSION_DIR" "$NVM_DIR/current"
|
||||
fi
|
||||
if nvm_is_iojs_version "$VERSION"; then
|
||||
echo "Now using io.js $(nvm_strip_iojs_prefix "$VERSION")"
|
||||
echo "Now using io.js $(nvm_strip_iojs_prefix "$VERSION")$(nvm_print_npm_version)"
|
||||
else
|
||||
echo "Now using node $VERSION"
|
||||
echo "Now using node $VERSION$(nvm_print_npm_version)"
|
||||
fi
|
||||
;;
|
||||
"run" )
|
||||
@@ -1400,7 +1462,7 @@ nvm() {
|
||||
VERSION='N/A'
|
||||
fi
|
||||
if [ $VERSION = "N/A" ]; then
|
||||
nvm help
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
fi
|
||||
@@ -1438,6 +1500,13 @@ nvm() {
|
||||
if [ "_$VERSION" = "_N/A" ]; then
|
||||
echo "$(nvm_ensure_version_prefix "$provided_version") is not installed yet" >&2
|
||||
EXIT_CODE=1
|
||||
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
|
||||
echo "Running io.js $(nvm_strip_iojs_prefix "$VERSION")"
|
||||
OUTPUT="$(nvm use "$VERSION" >/dev/null && iojs $ARGS)"
|
||||
@@ -1549,7 +1618,7 @@ $NVM_LS_REMOTE_IOJS_OUTPUT" | command grep -v "N/A" | sed '/^$/d')"
|
||||
VERSION="$2"
|
||||
fi
|
||||
if [ -z "$VERSION" ]; then
|
||||
nvm help
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
|
||||
@@ -1633,14 +1702,17 @@ $NVM_LS_REMOTE_IOJS_OUTPUT" | command grep -v "N/A" | sed '/^$/d')"
|
||||
local NVM_ALIAS_DIR
|
||||
NVM_ALIAS_DIR="$(nvm_alias_path)"
|
||||
command mkdir -p "$NVM_ALIAS_DIR"
|
||||
[ $# -ne 2 ] && nvm help && return 127
|
||||
if [ $# -ne 2 ]; then
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
[ ! -f "$NVM_ALIAS_DIR/$2" ] && echo "Alias $2 doesn't exist!" >&2 && return
|
||||
command rm -f "$NVM_ALIAS_DIR/$2"
|
||||
echo "Deleted alias $2"
|
||||
;;
|
||||
"reinstall-packages" | "copy-packages" )
|
||||
if [ $# -ne 2 ]; then
|
||||
nvm help
|
||||
>&2 nvm help
|
||||
return 127
|
||||
fi
|
||||
|
||||
@@ -1652,21 +1724,33 @@ $NVM_LS_REMOTE_IOJS_OUTPUT" | command grep -v "N/A" | sed '/^$/d')"
|
||||
return 2
|
||||
fi
|
||||
|
||||
local INSTALLS
|
||||
local NPMLIST
|
||||
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
|
||||
return 3
|
||||
fi
|
||||
INSTALLS=$(nvm deactivate > /dev/null && npm list -g --depth=0 | command tail -n +2 | command grep -o -e ' [^@]*' | command cut -c 2- | command grep -v npm | command xargs)
|
||||
VERSION="system"
|
||||
NPMLIST=$(nvm deactivate > /dev/null && npm list -g --depth=0 | command tail -n +2)
|
||||
else
|
||||
local VERSION
|
||||
VERSION="$(nvm_version "$PROVIDED_VERSION")"
|
||||
INSTALLS=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | command tail -n +2 | command grep -o -e ' [^@]*' | command cut -c 2- | command grep -v npm | command xargs)
|
||||
NPMLIST=$(nvm use "$VERSION" > /dev/null && npm list -g --depth=0 | command tail -n +2)
|
||||
fi
|
||||
|
||||
local INSTALLS
|
||||
INSTALLS=$(echo "$NPMLIST" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' | command xargs)
|
||||
|
||||
echo "Copying global packages from $VERSION..."
|
||||
echo "$INSTALLS" | command xargs npm install -g --quiet
|
||||
|
||||
local LINKS
|
||||
LINKS=$(echo "$NPMLIST" | command sed -n 's/.* -> \(.*\)/\1/ p')
|
||||
|
||||
echo "Linking global packages from $VERSION..."
|
||||
for LINK in $LINKS; do
|
||||
(cd "$LINK" && npm link)
|
||||
done
|
||||
;;
|
||||
"clear-cache" )
|
||||
command rm -f $NVM_DIR/v* "$(nvm_version_dir)" 2>/dev/null
|
||||
@@ -1676,7 +1760,7 @@ $NVM_LS_REMOTE_IOJS_OUTPUT" | command grep -v "N/A" | sed '/^$/d')"
|
||||
nvm_version $2
|
||||
;;
|
||||
"--version" )
|
||||
echo "0.24.0"
|
||||
echo "0.25.2"
|
||||
;;
|
||||
"unload" )
|
||||
unset -f nvm nvm_print_versions nvm_checksum \
|
||||
@@ -1690,25 +1774,27 @@ $NVM_LS_REMOTE_IOJS_OUTPUT" | command grep -v "N/A" | sed '/^$/d')"
|
||||
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
|
||||
;;
|
||||
* )
|
||||
nvm help
|
||||
>&2 nvm help
|
||||
return 127
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
nvm_supports_source_options() {
|
||||
[ "_$(echo 'echo $1' | . /dev/stdin yes)" = "_yes" ]
|
||||
[ "_$(echo 'echo $1' | . /dev/stdin yes 2> /dev/null)" = "_yes" ]
|
||||
}
|
||||
|
||||
VERSION="$(nvm_alias default 2>/dev/null)"
|
||||
if nvm_supports_source_options && [ "_$1" = "_--install" ]; then
|
||||
VERSION="$(nvm_alias default 2>/dev/null)"
|
||||
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 ls default >/dev/null; then
|
||||
nvm use default >/dev/null
|
||||
elif [ -n "$VERSION" ]; then
|
||||
nvm use "$VERSION" >/dev/null
|
||||
elif nvm_rc_version >/dev/null 2>&1; then
|
||||
nvm use >/dev/null
|
||||
fi
|
||||
|
||||
} # this ensures the entire script is downloaded #
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nvm",
|
||||
"version": "0.24.0",
|
||||
"version": "0.25.2",
|
||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
@@ -30,8 +30,8 @@
|
||||
},
|
||||
"homepage": "https://github.com/creationix/nvm",
|
||||
"devDependencies": {
|
||||
"replace": "~0.3.0",
|
||||
"semver": "~4.2.0",
|
||||
"urchin": "~0.0.5"
|
||||
"replace": "^0.3.0",
|
||||
"semver": "^4.3.4",
|
||||
"urchin": "^0.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
18
test/fast/Aliases/nvm_ensure_default_set
Executable file
18
test/fast/Aliases/nvm_ensure_default_set
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../../nvm.sh
|
||||
|
||||
nvm alias default 0.1 >/dev/null || die "'nvm alias default 0.1' failed"
|
||||
|
||||
nvm_ensure_default_set 0.3 || die "'nvm_ensure_default_set' with an existing default alias exits 0"
|
||||
|
||||
nvm unalias default || die "'nvm unalias default' failed"
|
||||
|
||||
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'"
|
||||
[ "_$EXIT_CODE" = "_0" ] || die "'nvm_ensure_default_set 0.2' did not exit with 0, got $EXIT_CODE"
|
||||
@@ -20,7 +20,7 @@ done
|
||||
OUTPUT="$(nvm_resolve_local_alias nonexistent)"
|
||||
EXIT_CODE=$(nvm_resolve_local_alias nonexistent > /dev/null 2>&1 ; echo $?)
|
||||
[ "_$EXIT_CODE" = "_2" ] || die "'nvm_resolve_local_alias nonexistent' did not return 2; got $EXIT_CODE"
|
||||
[ "_$OUTPUT" = "_N/A" ] || die "'nvm_resolve_local_alias nonexistent' did not output N/A; got $OUTPUT"
|
||||
[ "_$OUTPUT" = "_" ] || die "'nvm_resolve_local_alias nonexistent' did not have empty output; got $OUTPUT"
|
||||
|
||||
STABLE="$(nvm_resolve_local_alias stable)"
|
||||
[ "_$STABLE" = "_v0.0.10" ] || die "'nvm_resolve_local_alias stable' was not v0.0.10; got $STABLE"
|
||||
|
||||
@@ -14,3 +14,4 @@ rm -f "../../../alias/stable"
|
||||
rm -f "../../../alias/unstable"
|
||||
rm -f "../../../alias/node"
|
||||
rm -f "../../../alias/iojs"
|
||||
rm -f "../../../alias/default"
|
||||
|
||||
@@ -5,9 +5,13 @@ die () { echo $@ ; exit 1; }
|
||||
. ../../nvm.sh
|
||||
|
||||
nvm_has_system_node() { return 0; }
|
||||
[ "$(nvm use system 2>&1 | tail -n1)" = "Now using system version of node: $(node -v)." ] || die "Could not use system version of node"
|
||||
nvm_print_npm_version() { return ' (npm v1.2.3)'; }
|
||||
EXPECTED_OUTPUT="Now using system version of node: $(node -v)$(nvm_print_npm_version)"
|
||||
[ "$(nvm use system 2>&1 | tail -n1)" = "$EXPECTED_OUTPUT" ] || die "Could not use system version of node"
|
||||
|
||||
nvm_has_system_node() { return 1; }
|
||||
[ "$(nvm use system 2>&1 | tail -n1)" = "System version of node not found." ] || die "Did not report error, system node not found"
|
||||
nvm_print_npm_version() { return ''; }
|
||||
EXPECTED_OUTPUT="System version of node not found."
|
||||
[ "$(nvm use system 2>&1 | tail -n1)" = "$EXPECTED_OUTPUT" ] || die "Did not report error, system node not found"
|
||||
nvm use system 2>&1 > /dev/null || [ $? -eq 127 ] || die "Did not return error code, system node not found"
|
||||
|
||||
|
||||
13
test/fast/Unit tests/nvm_ensure_default_set
Executable file
13
test/fast/Unit tests/nvm_ensure_default_set
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../../nvm.sh
|
||||
|
||||
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""
|
||||
[ "_$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
|
||||
@@ -10,7 +10,12 @@ die () { echo $@ ; cleanup ; exit 1; }
|
||||
|
||||
return_zero () { return 0; }
|
||||
|
||||
[ "$(nvm deactivate > /dev/null 2>&1 ; nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"'
|
||||
if nvm_has_system_node || nvm_has_system_iojs; then
|
||||
EXPECTED_SYSTEM_NODE="system"
|
||||
else
|
||||
EXPECTED_SYSTEM_NODE="none"
|
||||
fi
|
||||
[ "_$(nvm deactivate > /dev/null 2>&1 ; nvm_ls_current)" = "_$EXPECTED_SYSTEM_NODE" ] || die "when deactivated, did not return $EXPECTED_SYSTEM_NODE"
|
||||
|
||||
rm -rf "$TEST_DIR"
|
||||
mkdir "$TEST_DIR"
|
||||
|
||||
@@ -5,13 +5,17 @@ die () { echo $@ ; exit 1; }
|
||||
. ../../../nvm.sh
|
||||
|
||||
[ "~$(nvm_num_version_groups)" = "~0" ] || die "no args should give 0"
|
||||
[ "~$(nvm_num_version_groups v)" = "~0" ] || die "just "v" should give 0"
|
||||
[ "~$(nvm_num_version_groups .)" = "~0" ] || die "just "." should give 0"
|
||||
[ "~$(nvm_num_version_groups a)" = "~1" ] || die "one letter should give 1"
|
||||
|
||||
[ "~$(nvm_num_version_groups 1)" = "~1" ] || die "1 should give 1"
|
||||
[ "~$(nvm_num_version_groups 1.)" = "~1" ] || die "1. should give 1"
|
||||
[ "~$(nvm_num_version_groups v1)" = "~1" ] || die "v1 should give 1"
|
||||
[ "~$(nvm_num_version_groups v1.)" = "~1" ] || die "v1. should give 1"
|
||||
|
||||
[ "~$(nvm_num_version_groups 1.2)" = "~2" ] || die "1.2 should give 2"
|
||||
[ "~$(nvm_num_version_groups 1.2.)" = "~2" ] || die "1.2. should give 2"
|
||||
[ "~$(nvm_num_version_groups v1.2)" = "~2" ] || die "v1.2 should give 2"
|
||||
[ "~$(nvm_num_version_groups v1.2.)" = "~2" ] || die "v1.2. should give 2"
|
||||
|
||||
|
||||
28
test/fast/Unit tests/nvm_print_npm_version
Executable file
28
test/fast/Unit tests/nvm_print_npm_version
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
cleanup () {
|
||||
alias nvm_has='\nvm_has'
|
||||
alias npm='\npm'
|
||||
unset -f nvm_has npm
|
||||
}
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../../nvm.sh
|
||||
|
||||
nvm_has() { return 1; }
|
||||
OUTPUT="$(nvm_print_npm_version)"
|
||||
[ -z "$OUTPUT" ] || die "nvm_print_npm_version did not return empty when nvm_has returns 1, got '$OUTPUT'"
|
||||
|
||||
nvm_has() { return 0; }
|
||||
npm() {
|
||||
if [ "_$@" = "_--version" ]; then
|
||||
echo "1.2.3"
|
||||
else
|
||||
echo "error"
|
||||
fi
|
||||
}
|
||||
OUTPUT="$(nvm_print_npm_version)"
|
||||
EXPECTED_OUTPUT=" (npm v1.2.3)"
|
||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_print_npm_version did not provided '$EXPECTED_OUTPUT', got '$OUTPUT'"
|
||||
|
||||
cleanup
|
||||
@@ -15,7 +15,7 @@ safe_type() {
|
||||
safe_type nvm_reset || die 'nvm_reset is not available'
|
||||
|
||||
# Apply nvm_reset
|
||||
nvm_reset
|
||||
nvm_reset || die 'nvm_reset failed'
|
||||
|
||||
# The names should be unset
|
||||
! safe_type nvm_do_install || die 'nvm_do_install is still available'
|
||||
|
||||
@@ -5,17 +5,23 @@ die () { echo "$@" ; exit 1; }
|
||||
. ../../../nvm.sh
|
||||
|
||||
nvm use 0.10.28
|
||||
(cd test-npmlink && npm link)
|
||||
|
||||
EXPECTED_PACKAGES="autoprefixer bower david eslint grunt-cli grunth-cli http-server jshint marked node-gyp recursive-blame uglify-js yo"
|
||||
EXPECTED_PACKAGES="autoprefixer bower david eslint grunt-cli grunth-cli http-server jshint marked node-gyp npmlist recursive-blame test-npmlink uglify-js yo"
|
||||
|
||||
echo "$EXPECTED_PACKAGES" | xargs npm install -g --quiet
|
||||
|
||||
get_packages() {
|
||||
npm list -g --depth=0 | \sed -e '1 d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' | xargs
|
||||
}
|
||||
|
||||
nvm use 0.10.29
|
||||
ORIGINAL_PACKAGES=$(npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | sort | uniq | xargs)
|
||||
ORIGINAL_PACKAGES=$(get_packages)
|
||||
|
||||
nvm reinstall-packages 0.10.28
|
||||
FINAL_PACKAGES=$(npm list -g --depth=0 | tail -n +2 | \grep -o -e ' [^@]*' | cut -c 2- | \grep -v npm | sort | uniq | xargs)
|
||||
FINAL_PACKAGES=$(get_packages)
|
||||
|
||||
[ "$FINAL_PACKAGES" = "$EXPECTED_PACKAGES" ] || die "final packages ($FINAL_PACKAGES) did not match expected packages ($EXPECTED_PACKAGES)"
|
||||
[ "$ORIGINAL_PACKAGES" != "$FINAL_PACKAGES" ] || die "original packages matched final packages ($ORIGINAL_PACKAGES)"
|
||||
|
||||
[ $(test-npmlink) = 'ok' ] || die "failed to run test-npmlink"
|
||||
|
||||
2
test/slow/nvm reinstall-packages/test-npmlink/index.js
Executable file
2
test/slow/nvm reinstall-packages/test-npmlink/index.js
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
console.log('ok')
|
||||
10
test/slow/nvm reinstall-packages/test-npmlink/package.json
Normal file
10
test/slow/nvm reinstall-packages/test-npmlink/package.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "test-npmlink",
|
||||
"version": "0.0.1",
|
||||
"description": "Stub package for testing npm link",
|
||||
"bin": {
|
||||
"test-npmlink": "index.js"
|
||||
},
|
||||
"author": "hax",
|
||||
"license": "ISC"
|
||||
}
|
||||
@@ -10,12 +10,12 @@ cleanup() {
|
||||
|
||||
EXPECTED_VERSION="v12.3.456"
|
||||
URL="https://github.com/creationix/nvm/releases/tag/$EXPECTED_VERSION"
|
||||
EXPECTED_CURL_ARGS="-w %{url_effective}\n -L -s -S http://latest.nvm.sh -o /dev/null"
|
||||
EXPECTED_CURL_ARGS="-q -w %{url_effective}\n -L -s -S http://latest.nvm.sh -o /dev/null"
|
||||
EXPECTED_WGET_ARGS="http://latest.nvm.sh --server-response -O /dev/null"
|
||||
|
||||
curl() {
|
||||
if [ "_$*" != "_$EXPECTED_CURL_ARGS" ]; then
|
||||
echo 2>& "expected args ($EXPECTED_CURL_ARGS), got ($*)"
|
||||
echo >&2 "expected args ($EXPECTED_CURL_ARGS), got ($*)"
|
||||
return 1
|
||||
else
|
||||
echo $URL
|
||||
@@ -23,7 +23,7 @@ curl() {
|
||||
}
|
||||
wget() {
|
||||
if [ "_$*" != "_$EXPECTED_WGET_ARGS" ]; then
|
||||
echo 2>& "expected args ($EXPECTED_WGET_ARGS), got ($*)"
|
||||
echo >&2 "expected args ($EXPECTED_WGET_ARGS), got ($*)"
|
||||
return 1
|
||||
else
|
||||
local WGET_CONTENTS
|
||||
@@ -100,7 +100,7 @@ Saving to: ‘/dev/null’
|
||||
"
|
||||
"$WGET_CONTENTS" | while read line
|
||||
do
|
||||
2>& echo "$line"
|
||||
>&2 echo "$line"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user