Compare commits
120 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f9769e40dd | ||
|
|
9c44a3e4c7 | ||
|
|
5048a78376 | ||
|
|
fd9e01b7e6 | ||
|
|
5c7f08843d | ||
|
|
6e6c5c4e2a | ||
|
|
1c2c4788a2 | ||
|
|
b59ecb9e11 | ||
|
|
7551746e55 | ||
|
|
70ac1e7fa4 | ||
|
|
f130d02efc | ||
|
|
150aea21ec | ||
|
|
273f9d497a | ||
|
|
1c85068091 | ||
|
|
42786630a1 | ||
|
|
938feca6a9 | ||
|
|
3747735980 | ||
|
|
5dd2d7e5d4 | ||
|
|
65c2435418 | ||
|
|
0a695c5d2a | ||
|
|
8fe677a644 | ||
|
|
213ff003d0 | ||
|
|
986abbf5db | ||
|
|
a2da9abd6d | ||
|
|
9068dda110 | ||
|
|
6baa9a0918 | ||
|
|
b8fe75e93a | ||
|
|
78a5e3fadf | ||
|
|
5e54886cbc | ||
|
|
d7849054f8 | ||
|
|
708ac80a55 | ||
|
|
d341d5e535 | ||
|
|
eef12cc2b3 | ||
|
|
99c8b59a14 | ||
|
|
abdc3f3c21 | ||
|
|
401ac45568 | ||
|
|
61709c1f97 | ||
|
|
1a8479ed31 | ||
|
|
a703d3591f | ||
|
|
1fa2acf5a7 | ||
|
|
d5c0e94166 | ||
|
|
6dc602b521 | ||
|
|
1d37af162a | ||
|
|
781373f7ce | ||
|
|
68574cc7e8 | ||
|
|
0f3b06320e | ||
|
|
d181abb628 | ||
|
|
f5643dc7ea | ||
|
|
6bcac7f638 | ||
|
|
ad71389dcc | ||
|
|
8cbf149558 | ||
|
|
e7ada80d08 | ||
|
|
9912f7cc46 | ||
|
|
6e02e5a54c | ||
|
|
42b010775b | ||
|
|
1c50c5c7aa | ||
|
|
200a9aa97e | ||
|
|
4512337c11 | ||
|
|
55677dba4a | ||
|
|
ca43ca21f5 | ||
|
|
fafbeb8c59 | ||
|
|
d67f2b110d | ||
|
|
9c2127ce33 | ||
|
|
423629c38b | ||
|
|
5ec0ccec1b | ||
|
|
7a423b7bb4 | ||
|
|
a3de7f3222 | ||
|
|
55d892adc8 | ||
|
|
3b42df8d1d | ||
|
|
21fa84225c | ||
|
|
4895aebf0a | ||
|
|
8a29122d0a | ||
|
|
26ed7a003a | ||
|
|
00ca5288b0 | ||
|
|
6d2912a2ab | ||
|
|
1d61584402 | ||
|
|
f6974744cd | ||
|
|
7171cbed6f | ||
|
|
8f66273922 | ||
|
|
1a9ab82e24 | ||
|
|
3fa004293c | ||
|
|
83efa2288d | ||
|
|
4cfe62d3d1 | ||
|
|
802f064178 | ||
|
|
c49cb68575 | ||
|
|
0534872e0f | ||
|
|
f1b8cf8fd6 | ||
|
|
78ff9a2215 | ||
|
|
b952be6f56 | ||
|
|
638ae5c6fa | ||
|
|
a7b6495172 | ||
|
|
703e43cc2b | ||
|
|
03636878d1 | ||
|
|
2ee4b6f414 | ||
|
|
10305f0791 | ||
|
|
276c031c60 | ||
|
|
63f72b37df | ||
|
|
cf5bfecec4 | ||
|
|
77c3f20956 | ||
|
|
e4ada9fa43 | ||
|
|
a0de15d0f7 | ||
|
|
df4689fbd2 | ||
|
|
018e47bec0 | ||
|
|
74cc1eb022 | ||
|
|
eda8ffbcc4 | ||
|
|
b9383c9016 | ||
|
|
25c0be1e20 | ||
|
|
a8233eb68c | ||
|
|
ea198c9a19 | ||
|
|
e0537ce3df | ||
|
|
cce5df35ba | ||
|
|
7e269961c3 | ||
|
|
f214ffaf1f | ||
|
|
d016fe010a | ||
|
|
fb5a51b1b7 | ||
|
|
3e5037a1be | ||
|
|
60fec40613 | ||
|
|
fb215546ee | ||
|
|
4b593bcda2 | ||
|
|
8349f0ff48 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -11,4 +11,4 @@ test/bak
|
|||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
current
|
||||||
|
|||||||
17
.travis.yml
17
.travis.yml
@@ -1,14 +1,29 @@
|
|||||||
language: c # defaults to ruby
|
language: c # defaults to ruby
|
||||||
install:
|
install:
|
||||||
- sudo apt-get install ksh zsh -y
|
- sudo apt-get install ksh zsh -y
|
||||||
|
- '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y'
|
||||||
before_script:
|
before_script:
|
||||||
- curl -o /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin && chmod +x /tmp/urchin
|
- '[ -n "$WITHOUT_CURL" ] || curl -o /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin'
|
||||||
|
- '[ -z "$WITHOUT_CURL" ] || wget -O /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin'
|
||||||
|
- chmod +x /tmp/urchin
|
||||||
script:
|
script:
|
||||||
- NVM_DIR=$TRAVIS_BUILD_DIR make TEST_SUITE=$TEST_SUITE URCHIN=/tmp/urchin $SHELL
|
- NVM_DIR=$TRAVIS_BUILD_DIR make TEST_SUITE=$TEST_SUITE URCHIN=/tmp/urchin $SHELL
|
||||||
env:
|
env:
|
||||||
- SHELL=sh TEST_SUITE=fast
|
- SHELL=sh TEST_SUITE=fast
|
||||||
|
- SHELL=sh TEST_SUITE=fast WITHOUT_CURL=1
|
||||||
- SHELL=dash TEST_SUITE=fast
|
- SHELL=dash TEST_SUITE=fast
|
||||||
|
- SHELL=dash TEST_SUITE=fast WITHOUT_CURL=1
|
||||||
- SHELL=bash TEST_SUITE=fast
|
- SHELL=bash TEST_SUITE=fast
|
||||||
|
- SHELL=bash TEST_SUITE=fast WITHOUT_CURL=1
|
||||||
- SHELL=zsh TEST_SUITE=fast
|
- SHELL=zsh TEST_SUITE=fast
|
||||||
|
- SHELL=zsh TEST_SUITE=fast WITHOUT_CURL=1
|
||||||
- SHELL=ksh TEST_SUITE=fast
|
- SHELL=ksh TEST_SUITE=fast
|
||||||
|
- SHELL=ksh TEST_SUITE=fast WITHOUT_CURL=1
|
||||||
- SHELL=sh TEST_SUITE=slow
|
- SHELL=sh TEST_SUITE=slow
|
||||||
|
- SHELL=sh TEST_SUITE=slow WITHOUT_CURL=1
|
||||||
|
- SHELL=dash TEST_SUITE=slow
|
||||||
|
- SHELL=dash TEST_SUITE=slow WITHOUT_CURL=1
|
||||||
|
- SHELL=bash TEST_SUITE=slow
|
||||||
|
- SHELL=bash TEST_SUITE=slow WITHOUT_CURL=1
|
||||||
|
- SHELL=zsh TEST_SUITE=slow
|
||||||
|
- SHELL=zsh TEST_SUITE=slow WITHOUT_CURL=1
|
||||||
|
|||||||
13
Makefile
13
Makefile
@@ -2,7 +2,7 @@ URCHIN=`which urchin`
|
|||||||
SHELLS=sh bash dash ksh zsh
|
SHELLS=sh bash dash ksh zsh
|
||||||
TEST_SUITE=fast
|
TEST_SUITE=fast
|
||||||
|
|
||||||
.PHONY: $(SHELLS) test
|
.PHONY: $(SHELLS) test verify-tag release
|
||||||
|
|
||||||
$(SHELLS):
|
$(SHELLS):
|
||||||
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
||||||
@@ -13,3 +13,14 @@ test: $(SHELLS)
|
|||||||
|
|
||||||
default: test
|
default: test
|
||||||
|
|
||||||
|
verify-tag:
|
||||||
|
ifndef TAG
|
||||||
|
$(error TAG is undefined)
|
||||||
|
endif
|
||||||
|
|
||||||
|
release: verify-tag
|
||||||
|
@ OLD_TAG=`git describe --abbrev=0 --tags` && \
|
||||||
|
replace "$${OLD_TAG/v/}" "$(TAG)" -- nvm.sh install.sh README.markdown package.json && \
|
||||||
|
git commit -m "v$(TAG)" nvm.sh install.sh README.markdown package.json && \
|
||||||
|
git tag "v$(TAG)"
|
||||||
|
|
||||||
|
|||||||
@@ -8,17 +8,17 @@ First you'll need to make sure your system has a c++ compiler. For OSX, XCode w
|
|||||||
|
|
||||||
To install you could use the [install script][2] using cURL:
|
To install you could use the [install script][2] using cURL:
|
||||||
|
|
||||||
curl https://raw.githubusercontent.com/creationix/nvm/v0.9.0/install.sh | sh
|
curl https://raw.githubusercontent.com/creationix/nvm/v0.14.0/install.sh | bash
|
||||||
|
|
||||||
or Wget:
|
or Wget:
|
||||||
|
|
||||||
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.9.0/install.sh | sh
|
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.14.0/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>
|
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
|
||||||
|
|
||||||
You can customize the install source, directory and profile using the `NVM_SOURCE`, `NVM_DIR` and `PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm sh` for a global install.
|
You can customize the install source, directory and profile using the `NVM_SOURCE`, `NVM_DIR` and `PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm bash` for a global install.
|
||||||
|
|
||||||
<sub>*NB. The installer can use Git, cURL or Wget to download NVM, whatever is available.*</sub>
|
<sub>*NB. The installer can use Git, curl, or wget to download NVM, whatever is available.*</sub>
|
||||||
|
|
||||||
### Manual install
|
### Manual install
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Often I also put in a line to use a specific version of node.
|
|||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory).
|
You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory).
|
||||||
`nvm use`, `nvm install`, and `nvm run` will all respect an `.nvmrc` file.
|
`nvm use`, `nvm install`, `nvm exec`, and `nvm run` will all respect an `.nvmrc` file.
|
||||||
|
|
||||||
To download, compile, and install the latest v0.10.x release of node, do this:
|
To download, compile, and install the latest v0.10.x release of node, do this:
|
||||||
|
|
||||||
@@ -52,6 +52,10 @@ Or you can just run it:
|
|||||||
|
|
||||||
nvm run 0.10 --version
|
nvm run 0.10 --version
|
||||||
|
|
||||||
|
Or, you can run any arbitrary command in a subshell with the desired version of node:
|
||||||
|
|
||||||
|
nvm exec 0.10 node --version
|
||||||
|
|
||||||
If you want to see what versions are installed:
|
If you want to see what versions are installed:
|
||||||
|
|
||||||
nvm ls
|
nvm ls
|
||||||
@@ -163,7 +167,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But
|
|||||||
nvm install -s 0.8.6
|
nvm install -s 0.8.6
|
||||||
|
|
||||||
[1]: https://github.com/creationix/nvm.git
|
[1]: https://github.com/creationix/nvm.git
|
||||||
[2]: https://github.com/creationix/nvm/blob/v0.9.0/install.sh
|
[2]: https://github.com/creationix/nvm/blob/v0.14.0/install.sh
|
||||||
[3]: https://travis-ci.org/creationix/nvm
|
[3]: https://travis-ci.org/creationix/nvm
|
||||||
[Urchin]: https://github.com/scraperwiki/urchin
|
[Urchin]: https://github.com/scraperwiki/urchin
|
||||||
|
|
||||||
|
|||||||
63
install.sh
63
install.sh
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
has() {
|
nvm_has() {
|
||||||
type "$1" > /dev/null 2>&1
|
type "$1" > /dev/null 2>&1
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
@@ -11,19 +11,22 @@ if [ -z "$NVM_DIR" ]; then
|
|||||||
NVM_DIR="$HOME/.nvm"
|
NVM_DIR="$HOME/.nvm"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! has "curl"; then
|
nvm_download() {
|
||||||
if has "wget"; then
|
if nvm_has "curl"; then
|
||||||
|
curl $*
|
||||||
|
elif nvm_has "wget"; then
|
||||||
# Emulate curl with wget
|
# Emulate curl with wget
|
||||||
curl() {
|
ARGS=$(echo "$*" | sed -e 's/--progress-bar /--progress=bar /' \
|
||||||
ARGS="$* "
|
-e 's/-L //' \
|
||||||
ARGS=${ARGS/-s /-q }
|
-e 's/-I /--server-response /' \
|
||||||
ARGS=${ARGS/-o /-O }
|
-e 's/-s /-q /' \
|
||||||
|
-e 's/-o /-O /' \
|
||||||
|
-e 's/-C - /-c /')
|
||||||
wget $ARGS
|
wget $ARGS
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
install_from_git() {
|
install_nvm_from_git() {
|
||||||
if [ -z "$NVM_SOURCE" ]; then
|
if [ -z "$NVM_SOURCE" ]; then
|
||||||
NVM_SOURCE="https://github.com/creationix/nvm.git"
|
NVM_SOURCE="https://github.com/creationix/nvm.git"
|
||||||
fi
|
fi
|
||||||
@@ -31,9 +34,9 @@ install_from_git() {
|
|||||||
if [ -d "$NVM_DIR/.git" ]; then
|
if [ -d "$NVM_DIR/.git" ]; then
|
||||||
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
||||||
printf "\r=> "
|
printf "\r=> "
|
||||||
cd "$NVM_DIR" && git pull 2> /dev/null || {
|
cd "$NVM_DIR" && (git fetch 2> /dev/null || {
|
||||||
echo >&2 "Failed to update nvm, run 'git pull' in $NVM_DIR yourself.."
|
echo >&2 "Failed to update nvm, run 'git fetch' in $NVM_DIR yourself." && exit 1
|
||||||
}
|
})
|
||||||
else
|
else
|
||||||
# Cloning to $NVM_DIR
|
# Cloning to $NVM_DIR
|
||||||
echo "=> Downloading nvm from git to '$NVM_DIR'"
|
echo "=> Downloading nvm from git to '$NVM_DIR'"
|
||||||
@@ -41,11 +44,12 @@ install_from_git() {
|
|||||||
mkdir -p "$NVM_DIR"
|
mkdir -p "$NVM_DIR"
|
||||||
git clone "$NVM_SOURCE" "$NVM_DIR"
|
git clone "$NVM_SOURCE" "$NVM_DIR"
|
||||||
fi
|
fi
|
||||||
|
cd $NVM_DIR && git checkout v0.14.0 && git branch -D master || true
|
||||||
}
|
}
|
||||||
|
|
||||||
install_as_script() {
|
install_nvm_as_script() {
|
||||||
if [ -z "$NVM_SOURCE" ]; then
|
if [ -z "$NVM_SOURCE" ]; then
|
||||||
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/master/nvm.sh"
|
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/v0.14.0/nvm.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Downloading to $NVM_DIR
|
# Downloading to $NVM_DIR
|
||||||
@@ -55,7 +59,7 @@ install_as_script() {
|
|||||||
else
|
else
|
||||||
echo "=> Downloading nvm as script to '$NVM_DIR'"
|
echo "=> Downloading nvm as script to '$NVM_DIR'"
|
||||||
fi
|
fi
|
||||||
curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
|
nvm_download -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
|
||||||
echo >&2 "Failed to download '$NVM_SOURCE'.."
|
echo >&2 "Failed to download '$NVM_SOURCE'.."
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
@@ -63,28 +67,28 @@ install_as_script() {
|
|||||||
|
|
||||||
if [ -z "$METHOD" ]; then
|
if [ -z "$METHOD" ]; then
|
||||||
# Autodetect install method
|
# Autodetect install method
|
||||||
if has "git"; then
|
if nvm_has "git"; then
|
||||||
install_from_git
|
install_nvm_from_git
|
||||||
elif has "curl"; then
|
elif nvm_has "nvm_download"; then
|
||||||
install_as_script
|
install_nvm_as_script
|
||||||
else
|
else
|
||||||
echo >&2 "You need git, curl or wget to install nvm"
|
echo >&2 "You need git, curl, or wget to install nvm"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$METHOD" = "git" ]; then
|
if [ "$METHOD" = "git" ]; then
|
||||||
if ! has "git"; then
|
if ! nvm_has "git"; then
|
||||||
echo >&2 "You need git to install nvm"
|
echo >&2 "You need git to install nvm"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
install_from_git
|
install_nvm_from_git
|
||||||
fi
|
fi
|
||||||
if [ "$METHOD" = "script" ]; then
|
if [ "$METHOD" = "script" ]; then
|
||||||
if ! has "curl"; then
|
if ! nvm_has "nvm_download"; then
|
||||||
echo >&2 "You need curl or wget to install nvm"
|
echo >&2 "You need curl or wget to install nvm"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
install_as_script
|
install_nvm_as_script
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -104,8 +108,8 @@ fi
|
|||||||
SOURCE_STR="\nexport NVM_DIR=\"$NVM_DIR\"\n[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" # This loads nvm"
|
SOURCE_STR="\nexport NVM_DIR=\"$NVM_DIR\"\n[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" # This loads nvm"
|
||||||
|
|
||||||
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
||||||
if [ -z $PROFILE ]; then
|
if [ -z "$PROFILE" ]; then
|
||||||
echo "=> Profile not found. Tried ~/.bash_profile ~/.zshrc and ~/.profile."
|
echo "=> Profile not found. Tried ~/.bash_profile, ~/.zshrc, and ~/.profile."
|
||||||
echo "=> Create one of them and run this script again"
|
echo "=> Create one of them and run this script again"
|
||||||
else
|
else
|
||||||
echo "=> Profile $PROFILE not found"
|
echo "=> Profile $PROFILE not found"
|
||||||
@@ -116,13 +120,12 @@ if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
|||||||
printf "$SOURCE_STR"
|
printf "$SOURCE_STR"
|
||||||
echo
|
echo
|
||||||
else
|
else
|
||||||
if ! grep -qc 'nvm.sh' $PROFILE; then
|
if ! grep -qc 'nvm.sh' "$PROFILE"; then
|
||||||
echo "=> Appending source string to $PROFILE"
|
echo "=> Appending source string to $PROFILE"
|
||||||
printf "$SOURCE_STR" >> "$PROFILE"
|
printf "$SOURCE_STR\n" >> "$PROFILE"
|
||||||
else
|
else
|
||||||
echo "=> Source string already in $PROFILE"
|
echo "=> Source string already in $PROFILE"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=> Close and reopen your terminal to start using nvm"
|
echo "=> Close and reopen your terminal to start using nvm"
|
||||||
|
|
||||||
|
|||||||
255
nvm.sh
255
nvm.sh
@@ -1,5 +1,6 @@
|
|||||||
# Node Version Manager
|
# Node Version Manager
|
||||||
# Implemented as a bash function
|
# Implemented as a POSIX-compliant function
|
||||||
|
# Should work on sh, dash, bash, ksh, zsh
|
||||||
# To use source this file from your bash profile
|
# To use source this file from your bash profile
|
||||||
#
|
#
|
||||||
# Implemented by Tim Caswell <tim@creationix.com>
|
# Implemented by Tim Caswell <tim@creationix.com>
|
||||||
@@ -9,7 +10,25 @@ NVM_SCRIPT_SOURCE="$_"
|
|||||||
|
|
||||||
nvm_has() {
|
nvm_has() {
|
||||||
type "$1" > /dev/null 2>&1
|
type "$1" > /dev/null 2>&1
|
||||||
return $?
|
}
|
||||||
|
|
||||||
|
nvm_download() {
|
||||||
|
if nvm_has "curl"; then
|
||||||
|
curl $*
|
||||||
|
elif nvm_has "wget"; then
|
||||||
|
# Emulate curl with wget
|
||||||
|
ARGS=$(echo "$*" | sed -e 's/--progress-bar /--progress=bar /' \
|
||||||
|
-e 's/-L //' \
|
||||||
|
-e 's/-I /--server-response /' \
|
||||||
|
-e 's/-s /-q /' \
|
||||||
|
-e 's/-o /-O /' \
|
||||||
|
-e 's/-C - /-c /')
|
||||||
|
eval wget $ARGS
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_has_system_node() {
|
||||||
|
[ "$(nvm deactivate 2> /dev/null && command -v node)" != '' ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Make zsh glob matching behave same as bash
|
# Make zsh glob matching behave same as bash
|
||||||
@@ -34,6 +53,25 @@ if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
|
|||||||
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
|
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
nvm_tree_contains_path() {
|
||||||
|
local tree
|
||||||
|
tree="$1"
|
||||||
|
local node_path
|
||||||
|
node_path="$2"
|
||||||
|
|
||||||
|
if [ "@$tree@" = "@@" ] || [ "@$node_path@" = "@@" ]; then
|
||||||
|
>&2 echo "both the tree and the node path are required"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
local pathdir
|
||||||
|
pathdir=$(dirname "$node_path")
|
||||||
|
while [ "$pathdir" != "" ] && [ "$pathdir" != "." ] && [ "$pathdir" != "/" ] && [ "$pathdir" != "$tree" ]; do
|
||||||
|
pathdir=$(dirname "$pathdir")
|
||||||
|
done
|
||||||
|
[ "$pathdir" = "$tree" ]
|
||||||
|
}
|
||||||
|
|
||||||
# Traverse up in directory tree to find containing folder
|
# Traverse up in directory tree to find containing folder
|
||||||
nvm_find_up() {
|
nvm_find_up() {
|
||||||
local path
|
local path
|
||||||
@@ -58,11 +96,45 @@ nvm_rc_version() {
|
|||||||
local NVMRC_PATH
|
local NVMRC_PATH
|
||||||
NVMRC_PATH="$(nvm_find_nvmrc)"
|
NVMRC_PATH="$(nvm_find_nvmrc)"
|
||||||
if [ -e "$NVMRC_PATH" ]; then
|
if [ -e "$NVMRC_PATH" ]; then
|
||||||
NVM_RC_VERSION=`cat "$NVMRC_PATH" | head -n 1`
|
read NVM_RC_VERSION < "$NVMRC_PATH"
|
||||||
echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
|
echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nvm_version_greater() {
|
||||||
|
local LHS
|
||||||
|
LHS=$(echo "$1" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}')
|
||||||
|
local RHS
|
||||||
|
RHS=$(echo "$2" | awk -F. '{for (i=1;i<=NF;++i) printf "%010d",$i}')
|
||||||
|
[ $LHS -gt $RHS ];
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_dir() {
|
||||||
|
local NVM_USE_NEW_DIR
|
||||||
|
NVM_USE_NEW_DIR="$1"
|
||||||
|
if [ -z "$NVM_USE_NEW_DIR" ] || [ "$NVM_USE_NEW_DIR" = "new" ]; then
|
||||||
|
echo "$NVM_DIR/versions"
|
||||||
|
elif [ "$NVM_USE_NEW_DIR" = "old" ]; then
|
||||||
|
echo "$NVM_DIR"
|
||||||
|
else
|
||||||
|
echo "unknown version dir" >&2
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_version_path() {
|
||||||
|
local VERSION
|
||||||
|
VERSION="$1"
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
echo "version is required" >&2
|
||||||
|
return 3
|
||||||
|
elif nvm_version_greater 0.12.0 "$VERSION"; then
|
||||||
|
echo "$(nvm_version_dir old)/$VERSION"
|
||||||
|
else
|
||||||
|
echo "$(nvm_version_dir new)/$VERSION"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Expand a version using the version cache
|
# Expand a version using the version cache
|
||||||
nvm_version() {
|
nvm_version() {
|
||||||
local PATTERN
|
local PATTERN
|
||||||
@@ -73,6 +145,11 @@ nvm_version() {
|
|||||||
PATTERN='current'
|
PATTERN='current'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$PATTERN" = "current" ]; then
|
||||||
|
nvm_ls_current
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
VERSION=`nvm_ls $PATTERN | tail -n1`
|
VERSION=`nvm_ls $PATTERN | tail -n1`
|
||||||
echo "$VERSION"
|
echo "$VERSION"
|
||||||
|
|
||||||
@@ -94,7 +171,7 @@ nvm_remote_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvm_normalize_version() {
|
nvm_normalize_version() {
|
||||||
echo "$1" | sed -e 's/^v//' | awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
|
echo "$1" | sed -e 's/^v//' | \awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
|
||||||
}
|
}
|
||||||
|
|
||||||
nvm_format_version() {
|
nvm_format_version() {
|
||||||
@@ -122,13 +199,31 @@ nvm_binary_available() {
|
|||||||
[ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
|
[ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nvm_ls_current() {
|
||||||
|
local NODE_PATH
|
||||||
|
NODE_PATH="$(which node 2> /dev/null)"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo 'none'
|
||||||
|
elif nvm_tree_contains_path "$NVM_DIR" "$NODE_PATH"; then
|
||||||
|
local VERSION
|
||||||
|
VERSION=`node -v 2>/dev/null`
|
||||||
|
if [ "$VERSION" = "v0.6.21-pre" ]; then
|
||||||
|
echo "v0.6.21"
|
||||||
|
else
|
||||||
|
echo "$VERSION"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo 'system'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
nvm_ls() {
|
nvm_ls() {
|
||||||
local PATTERN
|
local PATTERN
|
||||||
PATTERN=$1
|
PATTERN=$1
|
||||||
local VERSIONS
|
local VERSIONS
|
||||||
VERSIONS=''
|
VERSIONS=''
|
||||||
if [ "$PATTERN" = 'current' ]; then
|
if [ "$PATTERN" = 'current' ]; then
|
||||||
echo `node -v 2>/dev/null`
|
nvm_ls_current
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -137,18 +232,30 @@ nvm_ls() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
# If it looks like an explicit version, don't do anything funny
|
# If it looks like an explicit version, don't do anything funny
|
||||||
if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then
|
if [ `expr "$PATTERN" : "v[0-9]*\.[0-9]*\.[0-9]*$"` != 0 ]; then
|
||||||
if [ -d "$NVM_DIR/$PATTERN" ]; then
|
if [ -d "$(nvm_version_path "$PATTERN")" ]; then
|
||||||
VERSIONS="$PATTERN"
|
VERSIONS="$PATTERN"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "$(nvm_format_version $PATTERN)*" -exec basename '{}' ';' \
|
PATTERN=$(nvm_format_version $PATTERN)
|
||||||
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | grep -v '^ *\.'`
|
if [ `expr "$PATTERN" : "v[0-9]*\.[0-9]*$"` != 0 ]; then
|
||||||
|
PATTERN="$PATTERN."
|
||||||
|
fi
|
||||||
|
if [ -d "$(nvm_version_dir new)" ]; then
|
||||||
|
VERSIONS=`find "$(nvm_version_dir new)/" "$(nvm_version_dir old)/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
|
||||||
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.' | \grep -e '^v' | \grep -v -e '^versions$'`
|
||||||
|
else
|
||||||
|
VERSIONS=`find "$(nvm_version_dir old)/" -maxdepth 1 -type d -name "$PATTERN*" -exec basename '{}' ';' \
|
||||||
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | \grep -v '^ *\.' | \grep -e '^v'`
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -z "$VERSIONS" ]; then
|
if [ -z "$VERSIONS" ]; then
|
||||||
echo "N/A"
|
echo "N/A"
|
||||||
return 3
|
return 3
|
||||||
fi
|
fi
|
||||||
|
if [ -z "$PATTERN" ] && nvm_has_system_node; then
|
||||||
|
VERSIONS="$VERSIONS$(printf '\n%s' 'system')"
|
||||||
|
fi
|
||||||
echo "$VERSIONS"
|
echo "$VERSIONS"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -164,7 +271,7 @@ nvm_ls_remote() {
|
|||||||
else
|
else
|
||||||
PATTERN=".*"
|
PATTERN=".*"
|
||||||
fi
|
fi
|
||||||
VERSIONS=`curl -s $NVM_NODEJS_ORG_MIRROR/ \
|
VERSIONS=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/ -o - \
|
||||||
| \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \
|
| \egrep -o 'v[0-9]+\.[0-9]+\.[0-9]+' \
|
||||||
| \grep -w "${PATTERN}" \
|
| \grep -w "${PATTERN}" \
|
||||||
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
|
||||||
@@ -178,11 +285,11 @@ nvm_ls_remote() {
|
|||||||
|
|
||||||
nvm_checksum() {
|
nvm_checksum() {
|
||||||
if nvm_has "shasum"; then
|
if nvm_has "shasum"; then
|
||||||
checksum=$(shasum $1 | awk '{print $1}')
|
checksum=$(shasum $1 | \awk '{print $1}')
|
||||||
elif nvm_has "sha1"; then
|
elif nvm_has "sha1"; then
|
||||||
checksum=$(sha1 -q $1)
|
checksum=$(sha1 -q $1)
|
||||||
else
|
else
|
||||||
checksum=$(sha1sum $1 | awk '{print $1}')
|
checksum=$(sha1sum $1 | \awk '{print $1}')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$checksum" = "$2" ]; then
|
if [ "$checksum" = "$2" ]; then
|
||||||
@@ -200,12 +307,14 @@ nvm_print_versions() {
|
|||||||
local VERSION
|
local VERSION
|
||||||
local FORMAT
|
local FORMAT
|
||||||
local NVM_CURRENT
|
local NVM_CURRENT
|
||||||
NVM_CURRENT=`nvm_version current`
|
NVM_CURRENT=$(nvm_ls_current)
|
||||||
echo "$1" | while read VERSION; do
|
echo "$1" | while read VERSION; do
|
||||||
if [ "$VERSION" = "$NVM_CURRENT" ]; then
|
if [ "$VERSION" = "$NVM_CURRENT" ]; then
|
||||||
FORMAT='\033[0;32m-> %9s\033[0m'
|
FORMAT='\033[0;32m-> %9s\033[0m'
|
||||||
elif [ -d "$NVM_DIR/$VERSION" ]; then
|
elif [ -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
FORMAT='\033[0;34m%12s\033[0m'
|
FORMAT='\033[0;34m%12s\033[0m'
|
||||||
|
elif [ "$VERSION" = "system" ]; then
|
||||||
|
FORMAT='\033[0;33m%12s\033[0m'
|
||||||
else
|
else
|
||||||
FORMAT='%12s'
|
FORMAT='%12s'
|
||||||
fi
|
fi
|
||||||
@@ -274,7 +383,7 @@ nvm() {
|
|||||||
echo " nvm alias default 0.10.24 Set default node version on a shell"
|
echo " nvm alias default 0.10.24 Set default node version on a shell"
|
||||||
echo
|
echo
|
||||||
echo "Note:"
|
echo "Note:"
|
||||||
echo " to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders"
|
echo " to remove, delete, or uninstall nvm - just remove ~/.nvm, ~/.npm, and ~/.bower folders"
|
||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -290,8 +399,8 @@ nvm() {
|
|||||||
version_not_provided=0
|
version_not_provided=0
|
||||||
local provided_version
|
local provided_version
|
||||||
|
|
||||||
if ! nvm_has "curl"; then
|
if ! nvm_has "curl" && ! nvm_has "wget"; then
|
||||||
echo 'NVM Needs curl to proceed.' >&2;
|
echo 'nvm needs curl or wget to proceed.' >&2;
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -323,7 +432,7 @@ nvm() {
|
|||||||
fi
|
fi
|
||||||
provided_version="$NVM_RC_VERSION"
|
provided_version="$NVM_RC_VERSION"
|
||||||
fi
|
fi
|
||||||
[ -d "$NVM_DIR/$provided_version" ] && echo "$provided_version is already installed." >&2 && return
|
[ -d "$(nvm_version_path "$provided_version")" ] && echo "$provided_version is already installed." >&2 && return
|
||||||
|
|
||||||
VERSION=`nvm_remote_version $provided_version`
|
VERSION=`nvm_remote_version $provided_version`
|
||||||
ADDITIONAL_PARAMETERS=''
|
ADDITIONAL_PARAMETERS=''
|
||||||
@@ -336,7 +445,7 @@ nvm() {
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -d "$NVM_DIR/$VERSION" ]; then
|
if [ -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
echo "$VERSION is already installed." >&2
|
echo "$VERSION is already installed." >&2
|
||||||
nvm use "$VERSION"
|
nvm use "$VERSION"
|
||||||
return $?
|
return $?
|
||||||
@@ -354,18 +463,18 @@ nvm() {
|
|||||||
if nvm_binary_available "$VERSION"; then
|
if nvm_binary_available "$VERSION"; then
|
||||||
t="$VERSION-$os-$arch"
|
t="$VERSION-$os-$arch"
|
||||||
url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
|
url="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-${t}.tar.gz"
|
||||||
sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'`
|
sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-${t}.tar.gz | \awk '{print $1}'`
|
||||||
local tmpdir
|
local tmpdir
|
||||||
tmpdir="$NVM_DIR/bin/node-${t}"
|
tmpdir="$NVM_DIR/bin/node-${t}"
|
||||||
local tmptarball
|
local tmptarball
|
||||||
tmptarball="$tmpdir/node-${t}.tar.gz"
|
tmptarball="$tmpdir/node-${t}.tar.gz"
|
||||||
if (
|
if (
|
||||||
mkdir -p "$tmpdir" && \
|
mkdir -p "$tmpdir" && \
|
||||||
curl -L -C - --progress-bar $url -o "$tmptarball" && \
|
nvm_download -L -C - --progress-bar $url -o "$tmptarball" && \
|
||||||
nvm_checksum "$tmptarball" $sum && \
|
nvm_checksum "$tmptarball" $sum && \
|
||||||
tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
|
tar -xzf "$tmptarball" -C "$tmpdir" --strip-components 1 && \
|
||||||
rm -f "$tmptarball" && \
|
rm -f "$tmptarball" && \
|
||||||
mv "$tmpdir" "$NVM_DIR/$VERSION"
|
mv "$tmpdir" "$(nvm_version_path "$VERSION")"
|
||||||
)
|
)
|
||||||
then
|
then
|
||||||
nvm use $VERSION
|
nvm use $VERSION
|
||||||
@@ -391,22 +500,22 @@ nvm() {
|
|||||||
tmpdir="$NVM_DIR/src"
|
tmpdir="$NVM_DIR/src"
|
||||||
local tmptarball
|
local tmptarball
|
||||||
tmptarball="$tmpdir/node-$VERSION.tar.gz"
|
tmptarball="$tmpdir/node-$VERSION.tar.gz"
|
||||||
if [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then
|
if [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz" -o - 2>&1 | \grep '200 OK'`" != '' ]; then
|
||||||
tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
|
tarball="$NVM_NODEJS_ORG_MIRROR/$VERSION/node-$VERSION.tar.gz"
|
||||||
sum=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-$VERSION.tar.gz | awk '{print $1}'`
|
sum=`nvm_download -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt -o - | \grep node-$VERSION.tar.gz | \awk '{print $1}'`
|
||||||
elif [ "`curl -Is "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" | \grep '200 OK'`" != '' ]; then
|
elif [ "`nvm_download -s -I "$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz" -o - | \grep '200 OK'`" != '' ]; then
|
||||||
tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz"
|
tarball="$NVM_NODEJS_ORG_MIRROR/node-$VERSION.tar.gz"
|
||||||
fi
|
fi
|
||||||
if (
|
if (
|
||||||
[ -n "$tarball" ] && \
|
[ -n "$tarball" ] && \
|
||||||
mkdir -p "$tmpdir" && \
|
mkdir -p "$tmpdir" && \
|
||||||
curl -L --progress-bar $tarball -o "$tmptarball" && \
|
nvm_download -L --progress-bar $tarball -o "$tmptarball" && \
|
||||||
nvm_checksum "$tmptarball" $sum && \
|
nvm_checksum "$tmptarball" $sum && \
|
||||||
tar -xzf "$tmptarball" -C "$tmpdir" && \
|
tar -xzf "$tmptarball" -C "$tmpdir" && \
|
||||||
cd "$tmpdir/node-$VERSION" && \
|
cd "$tmpdir/node-$VERSION" && \
|
||||||
./configure --prefix="$NVM_DIR/$VERSION" $ADDITIONAL_PARAMETERS && \
|
./configure --prefix="$(nvm_version_path "$VERSION")" $ADDITIONAL_PARAMETERS && \
|
||||||
$make $MAKE_CXX && \
|
$make $MAKE_CXX && \
|
||||||
rm -f "$NVM_DIR/$VERSION" 2>/dev/null && \
|
rm -f "$(nvm_version_path "$VERSION")" 2>/dev/null && \
|
||||||
$make $MAKE_CXX install
|
$make $MAKE_CXX install
|
||||||
)
|
)
|
||||||
then
|
then
|
||||||
@@ -419,10 +528,10 @@ nvm() {
|
|||||||
if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
|
if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
|
||||||
echo "npm requires node v0.2.3 or higher" >&2
|
echo "npm requires node v0.2.3 or higher" >&2
|
||||||
else
|
else
|
||||||
curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh
|
nvm_download https://npmjs.org/install.sh -o - | clean=yes npm_install=0.2.19 sh
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
curl https://npmjs.org/install.sh | clean=yes sh
|
nvm_download https://npmjs.org/install.sh -o - | clean=yes sh
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -438,7 +547,7 @@ nvm() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
VERSION=`nvm_version $PATTERN`
|
VERSION=`nvm_version $PATTERN`
|
||||||
if [ ! -d $NVM_DIR/$VERSION ]; then
|
if [ ! -d "$(nvm_version_path "$VERSION")" ]; then
|
||||||
echo "$VERSION version is not installed..." >&2
|
echo "$VERSION version is not installed..." >&2
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
@@ -450,7 +559,7 @@ nvm() {
|
|||||||
"$NVM_DIR/src/node-$VERSION.tar.gz" \
|
"$NVM_DIR/src/node-$VERSION.tar.gz" \
|
||||||
"$NVM_DIR/bin/node-${t}" \
|
"$NVM_DIR/bin/node-${t}" \
|
||||||
"$NVM_DIR/bin/node-${t}.tar.gz" \
|
"$NVM_DIR/bin/node-${t}.tar.gz" \
|
||||||
"$NVM_DIR/$VERSION" 2>/dev/null
|
"$(nvm_version_path "$VERSION")" 2>/dev/null
|
||||||
echo "Uninstalled node $VERSION"
|
echo "Uninstalled node $VERSION"
|
||||||
|
|
||||||
# Rm any aliases that point to uninstalled version.
|
# Rm any aliases that point to uninstalled version.
|
||||||
@@ -491,9 +600,19 @@ nvm() {
|
|||||||
if [ -n "$NVM_RC_VERSION" ]; then
|
if [ -n "$NVM_RC_VERSION" ]; then
|
||||||
VERSION=`nvm_version $NVM_RC_VERSION`
|
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
if [ $2 = 'system' ]; then
|
||||||
|
if nvm_has_system_node && nvm deactivate; then
|
||||||
|
echo "Now using system version of node: $(node -v 2>/dev/null)."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
echo "System version of node not found." >&2
|
||||||
|
return 127
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
VERSION=`nvm_version $2`
|
VERSION=`nvm_version $2`
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
if [ -z "$VERSION" ]; then
|
if [ -z "$VERSION" ]; then
|
||||||
nvm help
|
nvm help
|
||||||
return 127
|
return 127
|
||||||
@@ -501,31 +620,34 @@ nvm() {
|
|||||||
if [ -z "$VERSION" ]; then
|
if [ -z "$VERSION" ]; then
|
||||||
VERSION=`nvm_version $2`
|
VERSION=`nvm_version $2`
|
||||||
fi
|
fi
|
||||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR="$(nvm_version_path "$VERSION")"
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
echo "$VERSION version is not installed yet" >&2
|
echo "$VERSION version is not installed yet" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
# Strip other version from PATH
|
# Strip other version from PATH
|
||||||
PATH=`nvm_strip_path "$PATH" "/bin"`
|
PATH=`nvm_strip_path "$PATH" "/bin"`
|
||||||
# Prepend current version
|
# Prepend current version
|
||||||
PATH=`nvm_prepend_path "$PATH" "$NVM_DIR/$VERSION/bin"`
|
PATH=`nvm_prepend_path "$PATH" "$NVM_VERSION_DIR/bin"`
|
||||||
if [ -z "$MANPATH" ]; then
|
if [ -z "$MANPATH" ]; then
|
||||||
MANPATH=$(manpath)
|
MANPATH=$(manpath)
|
||||||
fi
|
fi
|
||||||
# Strip other version from MANPATH
|
# Strip other version from MANPATH
|
||||||
MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
|
MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
|
||||||
# Prepend current version
|
# Prepend current version
|
||||||
MANPATH=`nvm_prepend_path "$MANPATH" "$NVM_DIR/$VERSION/share/man"`
|
MANPATH=`nvm_prepend_path "$MANPATH" "$NVM_VERSION_DIR/share/man"`
|
||||||
# Strip other version from NODE_PATH
|
# Strip other version from NODE_PATH
|
||||||
NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
# Prepend current version
|
# Prepend current version
|
||||||
NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_DIR/$VERSION/lib/node_modules"`
|
NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_VERSION_DIR/lib/node_modules"`
|
||||||
export PATH
|
export PATH
|
||||||
hash -r
|
hash -r
|
||||||
export MANPATH
|
export MANPATH
|
||||||
export NODE_PATH
|
export NODE_PATH
|
||||||
export NVM_PATH="$NVM_DIR/$VERSION/lib/node"
|
export NVM_PATH="$NVM_VERSION_DIR/lib/node"
|
||||||
export NVM_BIN="$NVM_DIR/$VERSION/bin"
|
export NVM_BIN="$NVM_VERSION_DIR/bin"
|
||||||
|
rm -f "$NVM_DIR/current" && ln -s "$NVM_VERSION_DIR" "$NVM_DIR/current"
|
||||||
echo "Now using node $VERSION"
|
echo "Now using node $VERSION"
|
||||||
;;
|
;;
|
||||||
"run" )
|
"run" )
|
||||||
@@ -561,21 +683,52 @@ nvm() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR=$(nvm_version_path "$VERSION")
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
echo "$VERSION version is not installed yet" >&2
|
echo "$VERSION version is not installed yet" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
RUN_NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
RUN_NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
RUN_NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_DIR/$VERSION/lib/node_modules"`
|
RUN_NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_VERSION_DIR/lib/node_modules"`
|
||||||
echo "Running node $VERSION"
|
echo "Running node $VERSION"
|
||||||
NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@"
|
NODE_PATH=$RUN_NODE_PATH $NVM_VERSION_DIR/bin/node "$@"
|
||||||
|
;;
|
||||||
|
"exec" )
|
||||||
|
shift
|
||||||
|
|
||||||
|
local provided_version
|
||||||
|
provided_version=$1
|
||||||
|
if [ -n "$provided_version" ]; then
|
||||||
|
VERSION=`nvm_version $provided_version`
|
||||||
|
if [ $VERSION = "N/A" ]; then
|
||||||
|
provided_version=''
|
||||||
|
nvm_rc_version
|
||||||
|
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local NVM_VERSION_DIR
|
||||||
|
NVM_VERSION_DIR=$(nvm_version_path "$VERSION")
|
||||||
|
if [ ! -d "$NVM_VERSION_DIR" ]; then
|
||||||
|
echo "$VERSION version is not installed yet" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "Running node $VERSION"
|
||||||
|
NODE_VERSION=$VERSION $NVM_DIR/nvm-exec "$@"
|
||||||
;;
|
;;
|
||||||
"ls" | "list" )
|
"ls" | "list" )
|
||||||
nvm_print_versions "`nvm_ls $2`"
|
local NVM_LS_OUTPUT
|
||||||
|
local NVM_LS_EXIT_CODE
|
||||||
|
NVM_LS_OUTPUT=$(nvm_ls "$2")
|
||||||
|
NVM_LS_EXIT_CODE=$?
|
||||||
|
nvm_print_versions "$NVM_LS_OUTPUT"
|
||||||
if [ $# -eq 1 ]; then
|
if [ $# -eq 1 ]; then
|
||||||
nvm alias
|
nvm alias
|
||||||
fi
|
fi
|
||||||
return
|
return $NVM_LS_EXIT_CODE
|
||||||
;;
|
;;
|
||||||
"ls-remote" | "list-remote" )
|
"ls-remote" | "list-remote" )
|
||||||
nvm_print_versions "`nvm_ls_remote $2`"
|
nvm_print_versions "`nvm_ls_remote $2`"
|
||||||
@@ -630,30 +783,28 @@ nvm() {
|
|||||||
nvm help
|
nvm help
|
||||||
return 127
|
return 127
|
||||||
fi
|
fi
|
||||||
VERSION=`nvm_version $2`
|
VERSION=$(nvm_version "$2")
|
||||||
local ROOT
|
local ROOT
|
||||||
ROOT=`(nvm use $VERSION && npm -g root)`
|
ROOT=$(nvm use $VERSION && npm -g root)
|
||||||
local ROOTDEPTH
|
|
||||||
ROOTDEPTH=$((`echo $ROOT | sed 's/[^\/]//g'|wc -m` -1))
|
|
||||||
|
|
||||||
# declare local INSTALLS first, otherwise it doesn't work in zsh
|
# declare local INSTALLS first, otherwise it doesn't work in zsh
|
||||||
local INSTALLS
|
local INSTALLS
|
||||||
INSTALLS=`nvm use $VERSION > /dev/null && npm -g -p ll | \grep "$ROOT\/[^/]\+$" | cut -d '/' -f $(($ROOTDEPTH + 2)) | cut -d ":" -f 2 | \grep -v npm | tr "\n" " "`
|
INSTALLS=$(nvm use $VERSION > /dev/null && npm list --global --parseable --depth=0 2> /dev/null | tail -n +2 | \grep -o -e '/[^/]*$' | cut -c 2- | xargs)
|
||||||
|
|
||||||
npm install -g ${INSTALLS[@]}
|
npm install -g --quiet $INSTALLS
|
||||||
;;
|
;;
|
||||||
"clear-cache" )
|
"clear-cache" )
|
||||||
rm -f $NVM_DIR/v* 2>/dev/null
|
rm -f $NVM_DIR/v* "$(nvm_version_dir)" 2>/dev/null
|
||||||
echo "Cache cleared."
|
echo "Cache cleared."
|
||||||
;;
|
;;
|
||||||
"version" )
|
"version" )
|
||||||
nvm_version $2
|
nvm_version $2
|
||||||
;;
|
;;
|
||||||
"--version" )
|
"--version" )
|
||||||
echo "0.9.0"
|
echo "0.14.0"
|
||||||
;;
|
;;
|
||||||
"unload" )
|
"unload" )
|
||||||
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version > /dev/null 2>&1
|
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version nvm_version_greater > /dev/null 2>&1
|
||||||
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
|
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nvm",
|
"name": "nvm",
|
||||||
"version": "0.9.0",
|
"version": "0.14.0",
|
||||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||||
"directories": {
|
"directories": {
|
||||||
"test": "test"
|
"test": "test"
|
||||||
|
|||||||
@@ -2,11 +2,40 @@
|
|||||||
|
|
||||||
mkdir ../../../v0.1.3
|
mkdir ../../../v0.1.3
|
||||||
mkdir ../../../v0.2.3
|
mkdir ../../../v0.2.3
|
||||||
|
mkdir ../../../v0.20.3
|
||||||
|
|
||||||
. ../../../nvm.sh
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
# The result should contain only the appropriate version numbers.
|
# The result should contain only the appropriate version numbers.
|
||||||
nvm ls 0.2 | grep v0.2.3 &&
|
|
||||||
nvm ls 0.1 | grep -v v0.2.3 &&
|
nvm ls 0.1 | grep 'v0.2.3' > /dev/null
|
||||||
nvm ls 0.1 | grep v0.1.3 &&
|
if [ $? -eq 0 ]; then
|
||||||
nvm ls v0.2 | grep v0.2.3
|
echo '"nvm ls 0.1" contained v0.2.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.1 | grep 'v0.20.3' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
die '"nvm ls 0.1" contained v0.20.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.1 | grep 'v0.1.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.1" did not contain v0.1.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.2.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.2" did not contain v0.2.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.20.3' > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
die '"nvm ls 0.2" contained v0.20.3'
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm ls 0.2 | grep 'v0.2.3' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die '"nvm ls 0.2" did not contain v0.2.3'
|
||||||
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls nonexistent_version
|
||||||
|
[ "$?" = "3" ]
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls node
|
||||||
|
[ "$?" = "3" ]
|
||||||
|
|
||||||
14
test/fast/Listing versions/Running "nvm ls" should filter out "versions"
Executable file
14
test/fast/Listing versions/Running "nvm ls" should filter out "versions"
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
mkdir ../../../v0.2.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir ../../../versions
|
||||||
|
|
||||||
|
[ -z "$(nvm ls | \grep 'versions')" ]
|
||||||
|
# The result should contain only the appropriate version numbers.
|
||||||
|
|
||||||
|
rmdir ../../../versions
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p ../../../v0.0.1
|
||||||
|
mkdir -p ../../../v0.0.3
|
||||||
|
mkdir -p ../../../v0.0.9
|
||||||
|
mkdir -p ../../../v0.3.1
|
||||||
|
mkdir -p ../../../v0.3.3
|
||||||
|
mkdir -p ../../../v0.3.9
|
||||||
|
|
||||||
|
nvm_has_system_node() { return 0; }
|
||||||
|
nvm ls | grep system 2>&1 > /dev/null
|
||||||
|
[ $? -eq 0 ] || die '"nvm ls" did not contain "system" when system node is present'
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
mkdir -p ../../../versions/v0.12.1
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
@@ -8,3 +8,4 @@ nvm ls v0.1 | grep v0.1.2 &&
|
|||||||
nvm ls v0.1.2 | grep v0.1.2 &&
|
nvm ls v0.1.2 | grep v0.1.2 &&
|
||||||
nvm ls v0.1. | grep N/A &&
|
nvm ls v0.1. | grep N/A &&
|
||||||
nvm ls v0.1.1 | grep N/A
|
nvm ls v0.1.1 | grep N/A
|
||||||
|
|
||||||
|
|||||||
12
test/fast/Listing versions/teardown
Normal file
12
test/fast/Listing versions/teardown
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
rmdir ../../../v0.0.1
|
||||||
|
rmdir ../../../v0.0.3
|
||||||
|
rmdir ../../../v0.0.9
|
||||||
|
rmdir ../../../v0.1.2
|
||||||
|
rmdir ../../../v0.1.3
|
||||||
|
rmdir ../../../v0.2.3
|
||||||
|
rmdir ../../../v0.3.1
|
||||||
|
rmdir ../../../v0.3.3
|
||||||
|
rmdir ../../../v0.3.9
|
||||||
|
rmdir ../../../versions
|
||||||
|
unalias nvm_has_system_node
|
||||||
|
|
||||||
@@ -3,4 +3,8 @@
|
|||||||
die () { echo $@ ; exit 1; }
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
. ../../nvm.sh
|
. ../../nvm.sh
|
||||||
[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version"
|
|
||||||
|
nvm deactivate 2>&1
|
||||||
|
|
||||||
|
[ "$(nvm current)" = "system" ] || [ "$(nvm current)" = "none" ] || die '"nvm current" did not report "system" or "none" when deactivated'
|
||||||
|
|
||||||
|
|||||||
13
test/fast/Running "nvm use system" should work as expected
Executable file
13
test/fast/Running "nvm use system" should work as expected
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
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_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 use system 2>&1 > /dev/null || [ $? -eq 127 ] || die "Did not return error code, system node not found"
|
||||||
|
|
||||||
32
test/fast/Running "nvm use x" should create and change the "current" symlink
Executable file
32
test/fast/Running "nvm use x" should create and change the "current" symlink
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
rm -rf ../../v0.10.29
|
||||||
|
mkdir ../../v0.10.29
|
||||||
|
nvm use 0.10.29
|
||||||
|
rmdir ../../v0.10.29
|
||||||
|
|
||||||
|
if [ ! -L ../../current ];then
|
||||||
|
echo "Expected 'current' symlink to be created!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
oldLink="$(readlink ../../current)"
|
||||||
|
|
||||||
|
if [ "$(basename $oldLink)" != 'v0.10.29' ];then
|
||||||
|
echo "Expected 'current' to point to v0.10.29 but was $oldLink"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf ../../v0.11.13
|
||||||
|
mkdir ../../v0.11.13
|
||||||
|
nvm use 0.11.13
|
||||||
|
rmdir ../../v0.11.13
|
||||||
|
|
||||||
|
newLink="$(readlink ../../current)"
|
||||||
|
|
||||||
|
if [ "$(basename $newLink)" != 'v0.11.13' ];then
|
||||||
|
echo "Expected 'current' to point to v0.11.13 but was $newLink"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
29
test/fast/Unit tests/nvm_has_system_node
Executable file
29
test/fast/Unit tests/nvm_has_system_node
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
rm ../../../v0.1.2/node
|
||||||
|
rmdir ../../../v0.1.2
|
||||||
|
}
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.2
|
||||||
|
touch ../../../v0.1.2/node
|
||||||
|
|
||||||
|
nvm use 0.1.2
|
||||||
|
|
||||||
|
if command -v node; then
|
||||||
|
nvm_has_system_node
|
||||||
|
else
|
||||||
|
! nvm_has_system_node
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm deactivate /dev/null 2>&1
|
||||||
|
|
||||||
|
if command -v node; then
|
||||||
|
nvm_has_system_node
|
||||||
|
else
|
||||||
|
! nvm_has_system_node
|
||||||
|
fi
|
||||||
|
|
||||||
28
test/fast/Unit tests/nvm_ls_current
Executable file
28
test/fast/Unit tests/nvm_ls_current
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
return_zero () { return 0; }
|
||||||
|
|
||||||
|
[ "$( (nvm deactivate > /dev/null 2>&1) && nvm_ls_current)" = "system" ] || die 'when deactivated, did not return "system"'
|
||||||
|
|
||||||
|
TEST_PWD=$(pwd)
|
||||||
|
TEST_DIR="$TEST_PWD/nvm_ls_current_tmp"
|
||||||
|
rm -rf "$TEST_DIR"
|
||||||
|
mkdir "$TEST_DIR"
|
||||||
|
ln -s "$(which which)" "$TEST_DIR/which"
|
||||||
|
ln -s "$(which dirname)" "$TEST_DIR/dirname"
|
||||||
|
|
||||||
|
[ "$(PATH="$TEST_DIR" nvm_ls_current)" = "none" ] || die 'when node not installed, nvm_ls_current did not return "none"'
|
||||||
|
[ "@$(PATH="$TEST_DIR" nvm_ls_current 2> /dev/stdout 1> /dev/null)@" = "@@" ] || die 'when node not installed, nvm_ls_current returned error output'
|
||||||
|
|
||||||
|
echo "#!/bin/bash" > "$TEST_DIR/node"
|
||||||
|
echo "echo 'VERSION FOO!'" > "$TEST_DIR/node"
|
||||||
|
chmod a+x "$TEST_DIR/node"
|
||||||
|
|
||||||
|
[ "$(alias nvm_tree_contains_path='return_zero' && PATH="$TEST_DIR" nvm_ls_current)" = "VERSION FOO!" ] || die 'when activated, did not return nvm node version'
|
||||||
|
|
||||||
|
rm -rf "$TEST_DIR"
|
||||||
|
|
||||||
32
test/fast/Unit tests/nvm_tree_contains_path
Executable file
32
test/fast/Unit tests/nvm_tree_contains_path
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
rm tmp/node
|
||||||
|
rmdir tmp
|
||||||
|
rm tmp2/node
|
||||||
|
rmdir tmp2
|
||||||
|
}
|
||||||
|
die () { echo $@ ; cleanup; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
mkdir -p tmp
|
||||||
|
touch tmp/node
|
||||||
|
mkdir -p tmp2
|
||||||
|
touch tmp2/node
|
||||||
|
|
||||||
|
[ "$(nvm_tree_contains_path 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with no args'
|
||||||
|
[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with no args'
|
||||||
|
[ "$(nvm_tree_contains_path tmp 2>&1)" = "both the tree and the node path are required" ] || die 'incorrect error message with one arg'
|
||||||
|
[ "$(nvm_tree_contains_path > /dev/null 2>&1 ; echo $?)" = "2" ] || die 'incorrect error code with one arg'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp tmp/node || die '"tmp" should contain "tmp/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp tmp2/node && die '"tmp" should not contain "tmp2/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp2 tmp2/node || die '"tmp2" should contain "tmp2/node"'
|
||||||
|
|
||||||
|
nvm_tree_contains_path tmp2 tmp/node && die '"tmp2" should not contain "tmp/node"'
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
11
test/fast/Unit tests/nvm_version_dir
Executable file
11
test/fast/Unit tests/nvm_version_dir
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm_version_dir)" = "$NVM_DIR/versions" ] || die '"nvm_version_dir" did not return new dir path'
|
||||||
|
[ "$(nvm_version_dir new)" = "$(nvm_version_dir)" ] || die '"nvm_version_dir new" did not return new dir path'
|
||||||
|
[ "$(nvm_version_dir old)" = "$NVM_DIR" ] || die '"nvm_version_dir old" did not return old dir path'
|
||||||
|
[ "$(nvm_version_dir foo 2>&1)" = "unknown version dir" ] || die '"nvm_version_dir foo" did not error out'
|
||||||
|
|
||||||
16
test/fast/Unit tests/nvm_version_greater
Executable file
16
test/fast/Unit tests/nvm_version_greater
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm_version_greater 0.10.0 0.2.12 || die '"nvm_version_greater 0.10.0 0.2.12" did not return true'
|
||||||
|
|
||||||
|
if nvm_version_greater 0.10.0 0.20.12; then
|
||||||
|
die '"nvm_version_greater 0.10.0 0.20.12" returned true'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if nvm_version_greater 0.10.0 0.10.0; then
|
||||||
|
die '"nvm_version_greater" returned false for the same two versions'
|
||||||
|
fi
|
||||||
|
|
||||||
11
test/fast/Unit tests/nvm_version_path
Executable file
11
test/fast/Unit tests/nvm_version_path
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm_version_path foo)" = "$NVM_DIR/foo" ] || die '"nvm_version_path foo" did not return correct location'
|
||||||
|
[ "$(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/v0.12.0" ] || die 'new version has the wrong path'
|
||||||
|
|
||||||
@@ -9,5 +9,8 @@
|
|||||||
for SRC in v* src alias; do
|
for SRC in v* src alias; do
|
||||||
[ -e "$SRC" ] && mv "$SRC" bak
|
[ -e "$SRC" ] && mv "$SRC" bak
|
||||||
done
|
done
|
||||||
|
if [ -d versions ]; then
|
||||||
|
mv versions bak
|
||||||
|
fi
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|||||||
14
test/slow/Running "nvm current" should display current nvm environment.
Executable file
14
test/slow/Running "nvm current" should display current nvm environment.
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
nvm install 0.10
|
||||||
|
|
||||||
|
[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version: got \"$(nvm current)\", expected \"$(node -v)\""
|
||||||
|
|
||||||
|
nvm install 0.6.21
|
||||||
|
[ "$(node -v)" = "v0.6.21-pre" ] || die "v0.6.21-pre not installed with v0.6.21"
|
||||||
|
[ "$(nvm current)" = "v0.6.21" ] || die "v0.6.21-pre not reported as v0.6.21"
|
||||||
|
|
||||||
10
test/slow/nvm copy-packages/setup_dir
Executable file
10
test/slow/nvm copy-packages/setup_dir
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm install 0.10.28
|
||||||
|
nvm install 0.10.29
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
21
test/slow/nvm copy-packages/should work as expected
Executable file
21
test/slow/nvm copy-packages/should work as expected
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo "$@" ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10.28
|
||||||
|
|
||||||
|
EXPECTED_PACKAGES="autoprefixer bower david eslint grunt-cli grunth-cli http-server jshint marked node-gyp npm recursive-blame uglify-js yo"
|
||||||
|
|
||||||
|
npm install -g --quiet $EXPECTED_PACKAGES
|
||||||
|
|
||||||
|
nvm use 0.10.29
|
||||||
|
ORIGINAL_PACKAGES=$(npm list --global --parseable --depth=0 2> /dev/null | tail -n +2 | grep -o -e '/[^/]*$' | cut -c 2- | sort | uniq | xargs)
|
||||||
|
|
||||||
|
nvm copy-packages 0.10.28
|
||||||
|
FINAL_PACKAGES=$(npm list --global --parseable --depth=0 2> /dev/null | tail -n +2 | grep -o -e '/[^/]*$' | cut -c 2- | sort | uniq | xargs)
|
||||||
|
|
||||||
|
[ "$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)"
|
||||||
|
|
||||||
12
test/slow/nvm copy-packages/teardown_dir
Executable file
12
test/slow/nvm copy-packages/teardown_dir
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm uninstall v0.10.28
|
||||||
|
nvm uninstall v0.10.29
|
||||||
|
|
||||||
|
rm -f .nvmrc
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
13
test/slow/nvm exec/Running "nvm exec 0.x" should work
Executable file
13
test/slow/nvm exec/Running "nvm exec 0.x" should work
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10
|
||||||
|
NPM_VERSION_TEN="$(npm --version)"
|
||||||
|
|
||||||
|
nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || 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"
|
||||||
|
|
||||||
17
test/slow/nvm exec/Running "nvm exec" should pick up .nvmrc version
Executable file
17
test/slow/nvm exec/Running "nvm exec" should pick up .nvmrc version
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm use 0.10.7
|
||||||
|
NPM_VERSION_TEN="$(npm --version)"
|
||||||
|
|
||||||
|
nvm use 0.11.7 && [ "$(node --version)" = "v0.11.7" ] || die "\`nvm use\` failed!"
|
||||||
|
|
||||||
|
echo "0.10.7" > .nvmrc
|
||||||
|
|
||||||
|
[ "$(nvm exec npm --version | tail -1)" = "$NPM_VERSION_TEN" ] || die "\`nvm exec\` failed to run with the .nvmrc version"
|
||||||
|
|
||||||
|
[ "$(nvm exec npm --version | head -1)" = "Found '$PWD/.nvmrc' with version <0.10.7>" ] || die "\`nvm exec\` failed to print out the \"found in .nvmrc\" message"
|
||||||
|
|
||||||
10
test/slow/nvm exec/setup_dir
Executable file
10
test/slow/nvm exec/setup_dir
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm install 0.10.7
|
||||||
|
nvm install 0.11.7
|
||||||
|
|
||||||
|
if [ -f ".nvmrc" ]; then
|
||||||
|
mv .nvmrc .nvmrc.bak
|
||||||
|
fi
|
||||||
|
|
||||||
12
test/slow/nvm exec/teardown_dir
Executable file
12
test/slow/nvm exec/teardown_dir
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
nvm uninstall v0.10.7
|
||||||
|
nvm uninstall v0.11.7
|
||||||
|
|
||||||
|
rm .nvmrc
|
||||||
|
|
||||||
|
if [ -f ".nvmrc.bak" ]; then
|
||||||
|
mv .nvmrc.bak .nvmrc
|
||||||
|
fi
|
||||||
|
|
||||||
Reference in New Issue
Block a user