Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
222250f2d1 | ||
|
|
77f4490391 | ||
|
|
0871131dfd | ||
|
|
e6bd207624 | ||
|
|
bad79e6d77 | ||
|
|
d07fa2db10 | ||
|
|
20953ab04c | ||
|
|
4cf940153c | ||
|
|
47bbf93f50 | ||
|
|
7976a1343f | ||
|
|
bf8abf1052 | ||
|
|
eb6031cb58 | ||
|
|
55a6f1f06e | ||
|
|
c188c1b11a | ||
|
|
b15ea07067 | ||
|
|
752c0e4ef1 | ||
|
|
49364532b3 | ||
|
|
9157cb4cfe | ||
|
|
6dde4aac38 | ||
|
|
96635cd2bd | ||
|
|
5342b6a04c | ||
|
|
2d0c025c49 | ||
|
|
6ed93f4c01 | ||
|
|
3c2719a85e | ||
|
|
c47f03f996 | ||
|
|
300022642a | ||
|
|
bce3abaa4b | ||
|
|
9f6280265a | ||
|
|
7211c9ee29 | ||
|
|
246caa8581 | ||
|
|
1fac49f887 | ||
|
|
d2422a623a | ||
|
|
fcc00b22b7 | ||
|
|
0787a55999 | ||
|
|
7c45d62b37 | ||
|
|
ec7909dcd3 | ||
|
|
cf5f195d75 | ||
|
|
9f0520cdd0 | ||
|
|
d950c1a0ea | ||
|
|
6123fbcd31 | ||
|
|
def7ec5364 | ||
|
|
52a384a0cc | ||
|
|
ba1e2f1cdf | ||
|
|
625e54880f | ||
|
|
cebda7d35a | ||
|
|
4a9a15c404 | ||
|
|
a34c080d77 | ||
|
|
0b97ee1d2a |
@@ -1,5 +1,8 @@
|
||||
language: bash
|
||||
language: c # defaults to ruby
|
||||
install:
|
||||
- sudo apt-get install ksh zsh -y
|
||||
before_script:
|
||||
- curl -o /tmp/urchin https://raw.github.com/scraperwiki/urchin/master/urchin && chmod +x /tmp/urchin
|
||||
script:
|
||||
- NVM_DIR=$TRAVIS_BUILD_DIR /tmp/urchin test
|
||||
- NVM_DIR=$TRAVIS_BUILD_DIR make URCHIN=/tmp/urchin test
|
||||
|
||||
|
||||
16
Makefile
Normal file
16
Makefile
Normal file
@@ -0,0 +1,16 @@
|
||||
URCHIN=`which urchin`
|
||||
SHELLS=sh bash dash ksh zsh
|
||||
|
||||
.PHONY: $(SHELLS) test
|
||||
|
||||
fast: $(SHELLS)
|
||||
|
||||
$(SHELLS):
|
||||
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
||||
@$@ $(URCHIN) -f test/fast
|
||||
|
||||
test: fast
|
||||
@$(URCHIN) -f test/slow
|
||||
|
||||
default: test
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Node Version Manager
|
||||
# Node Version Manager [][3]
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -6,16 +6,19 @@ First you'll need to make sure your system has a c++ compiler. For OSX, XCode w
|
||||
|
||||
### Install script
|
||||
|
||||
To install you could use the [install script](https://github.com/creationix/nvm/blob/v0.3.0/install.sh) (requires Git) using cURL:
|
||||
To install you could use the [install script][2] using cURL:
|
||||
|
||||
curl https://raw.github.com/creationix/nvm/v0.3.0/install.sh | sh
|
||||
curl https://raw.github.com/creationix/nvm/v0.5.1/install.sh | sh
|
||||
|
||||
or Wget:
|
||||
|
||||
wget -qO- https://raw.github.com/creationix/nvm/v0.3.0/install.sh | sh
|
||||
wget -qO- https://raw.github.com/creationix/nvm/v0.5.1/install.sh | sh
|
||||
|
||||
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile` 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 `NVM_PROFILE` variables. Eg: `curl ... | NVM_DIR=/usr/local/nvm sh` for a global install.
|
||||
|
||||
<sub>*NB. The installer can use Git, cURL or Wget to download NVM, whatever is available.*</sub>
|
||||
|
||||
### Manual install
|
||||
|
||||
@@ -87,7 +90,7 @@ The above copyright notice and this permission notice shall be included in all c
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
## Running tests
|
||||
Tests are written in [Urchin](https://github.com/scraperwiki/urchin). Install Urchin (and other dependencies) like so:
|
||||
Tests are written in [Urchin]. Install Urchin (and other dependencies) like so:
|
||||
|
||||
npm install
|
||||
|
||||
@@ -160,3 +163,8 @@ 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.5.1/install.sh
|
||||
[3]: https://travis-ci.org/creationix/nvm
|
||||
[Urchin]: https://github.com/scraperwiki/urchin
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
fatalExit (){
|
||||
echo "$@" && exit 1;
|
||||
}
|
||||
|
||||
# an alternative URL that could be used: https://github.com/creationix/nvm/tarball/master
|
||||
if [ "$NVM_SOURCE" = "" ]; then
|
||||
NVM_SOURCE="https://raw.github.com/creationix/nvm/master/nvm.sh"
|
||||
fi
|
||||
|
||||
if [ "$NVM_DIR" = "" ]; then
|
||||
NVM_DIR="$HOME/.nvm"
|
||||
fi
|
||||
|
||||
# Downloading to $NVM_DIR
|
||||
mkdir -p "$NVM_DIR"
|
||||
pushd "$NVM_DIR" > /dev/null
|
||||
echo -ne "=> Downloading... "
|
||||
|
||||
# Detect if curl or wget is installed to download NVM_SOURCE
|
||||
if type curl > /dev/null 2>&1; then
|
||||
curl --silent "$NVM_SOURCE" -o nvm.sh || fatalExit "Failed";
|
||||
elif type wget > /dev/null 2>&1; then
|
||||
wget --quiet "$NVM_SOURCE" -O nvm.sh || fatalExit "Failed";
|
||||
else
|
||||
fatalExit "Must have curl or wget to install nvm";
|
||||
fi
|
||||
|
||||
echo "Downloaded"
|
||||
popd > /dev/null
|
||||
|
||||
# Detect profile file, .bash_profile has precedence over .profile
|
||||
if [ ! -z "$1" ]; then
|
||||
PROFILE="$1"
|
||||
else
|
||||
if [ -f "$HOME/.bash_profile" ]; then
|
||||
PROFILE="$HOME/.bash_profile"
|
||||
elif [ -f "$HOME/.profile" ]; then
|
||||
PROFILE="$HOME/.profile"
|
||||
fi
|
||||
fi
|
||||
|
||||
SOURCE_STR="[[ -s "$NVM_DIR/nvm.sh" ]] && . "$NVM_DIR/nvm.sh" # This loads NVM"
|
||||
|
||||
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
||||
if [ -z $PROFILE ]; then
|
||||
echo "=> Profile not found"
|
||||
else
|
||||
echo "=> Profile $PROFILE not found"
|
||||
fi
|
||||
echo "=> Append the following line to the correct file yourself"
|
||||
echo
|
||||
echo "\t$SOURCE_STR"
|
||||
echo
|
||||
echo "=> Close and reopen your terminal to start using NVM"
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! grep -qc 'nvm.sh' $PROFILE; then
|
||||
echo "=> Appending source string to $PROFILE"
|
||||
echo "" >> "$PROFILE"
|
||||
echo $SOURCE_STR >> "$PROFILE"
|
||||
else
|
||||
echo "=> Source string already in $PROFILE"
|
||||
fi
|
||||
|
||||
echo "=> Close and reopen your terminal to start using NVM"
|
||||
|
||||
122
install.sh
122
install.sh
@@ -1,28 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
NVM_DIR="$HOME/.nvm"
|
||||
set -e
|
||||
|
||||
if ! hash git 2>/dev/null; then
|
||||
echo >&2 "You need to install git - visit http://git-scm.com/downloads"
|
||||
echo >&2 "or, use install-gitless.sh instead."
|
||||
exit 1
|
||||
has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
if [ -z "$NVM_DIR" ]; then
|
||||
NVM_DIR="$HOME/.nvm"
|
||||
fi
|
||||
|
||||
if [ -d "$NVM_DIR" ]; then
|
||||
echo "=> NVM is already installed in $NVM_DIR, trying to update"
|
||||
echo -ne "\r=> "
|
||||
cd $NVM_DIR && git pull
|
||||
if ! has "curl"; then
|
||||
if has "wget"; then
|
||||
# Emulate curl with wget
|
||||
curl() {
|
||||
ARGS="$* "
|
||||
ARGS=${ARGS/-s /-q }
|
||||
ARGS=${ARGS/-o /-O }
|
||||
wget $ARGS
|
||||
}
|
||||
fi
|
||||
fi
|
||||
|
||||
install_from_git() {
|
||||
if [ -z "$NVM_SOURCE" ]; then
|
||||
NVM_SOURCE="https://github.com/creationix/nvm.git"
|
||||
fi
|
||||
|
||||
if [ -d "$NVM_DIR/.git" ]; then
|
||||
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
||||
echo -e "\r=> \c"
|
||||
cd "$NVM_DIR" && git pull 2> /dev/null || {
|
||||
echo >&2 "Failed to update nvm, run 'git pull' in $NVM_DIR yourself.."
|
||||
}
|
||||
else
|
||||
# Cloning to $NVM_DIR
|
||||
git clone https://github.com/creationix/nvm.git $NVM_DIR
|
||||
echo "=> Downloading nvm from git to '$NVM_DIR'"
|
||||
echo -e "\r=> \c"
|
||||
mkdir -p "$NVM_DIR"
|
||||
git clone "$NVM_SOURCE" "$NVM_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
install_as_script() {
|
||||
if [ -z "$NVM_SOURCE" ]; then
|
||||
NVM_SOURCE="https://raw.github.com/creationix/nvm/master/nvm.sh"
|
||||
fi
|
||||
|
||||
# Downloading to $NVM_DIR
|
||||
mkdir -p "$NVM_DIR"
|
||||
if [ -d "$NVM_DIR/nvm.sh" ]; then
|
||||
echo "=> nvm is already installed in $NVM_DIR, trying to update"
|
||||
else
|
||||
echo "=> Downloading nvm as script to '$NVM_DIR'"
|
||||
fi
|
||||
curl -s "$NVM_SOURCE" -o "$NVM_DIR/nvm.sh" || {
|
||||
echo >&2 "Failed to download '$NVM_SOURCE'.."
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
if [ -z "$METHOD" ]; then
|
||||
# Autodetect install method
|
||||
if has "git"; then
|
||||
install_from_git
|
||||
elif has "curl"; then
|
||||
install_as_script
|
||||
else
|
||||
echo >&2 "You need git, curl or wget to install nvm"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "$METHOD" = "git" ]; then
|
||||
if ! has "git"; then
|
||||
echo >&2 "You need git to install nvm"
|
||||
exit 1
|
||||
fi
|
||||
install_from_git
|
||||
fi
|
||||
if [ "$METHOD" = "script" ]; then
|
||||
if ! has "curl"; then
|
||||
echo >&2 "You need curl or wget to install nvm"
|
||||
exit 1
|
||||
fi
|
||||
install_as_script
|
||||
fi
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
# Detect profile file, .bash_profile has precedence over .profile
|
||||
if [ ! -z "$1" ]; then
|
||||
PROFILE="$1"
|
||||
else
|
||||
# Detect profile file if not specified as environment variable (eg: PROFILE=~/.myprofile).
|
||||
if [ -z "$PROFILE" ]; then
|
||||
if [ -f "$HOME/.bash_profile" ]; then
|
||||
PROFILE="$HOME/.bash_profile"
|
||||
elif [ -f "$HOME/.zshrc" ]; then
|
||||
@@ -32,28 +101,22 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
SOURCE_STR="[[ -s \$HOME/.nvm/nvm.sh ]] && . \$HOME/.nvm/nvm.sh # This loads NVM"
|
||||
SOURCE_STR="[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" # This loads nvm"
|
||||
|
||||
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
||||
if [ -z $PROFILE ]; then
|
||||
echo "=> Profile not found. Tried $HOME/.bash_profile and $HOME/.profile"
|
||||
echo "=> Profile not found. Tried ~/.bash_profile ~/.zshrc and ~/.profile."
|
||||
echo "=> Create one of them and run this script again"
|
||||
else
|
||||
echo "=> Profile $PROFILE not found"
|
||||
echo "=> Create it (touch $PROFILE) and run this script again"
|
||||
fi
|
||||
echo "=> Run this script again after running the following:"
|
||||
echo " OR"
|
||||
echo "=> Append the following line to the correct file yourself:"
|
||||
echo
|
||||
echo "\ttouch $HOME/.profile"
|
||||
echo " $SOURCE_STR"
|
||||
echo
|
||||
echo "-- OR --"
|
||||
echo
|
||||
echo "=> Append the following line to the correct file yourself"
|
||||
echo
|
||||
echo "\t$SOURCE_STR"
|
||||
echo
|
||||
echo "=> Close and reopen your terminal afterwards to start using NVM"
|
||||
exit
|
||||
fi
|
||||
|
||||
else
|
||||
if ! grep -qc 'nvm.sh' $PROFILE; then
|
||||
echo "=> Appending source string to $PROFILE"
|
||||
echo "" >> "$PROFILE"
|
||||
@@ -61,6 +124,7 @@ if ! grep -qc 'nvm.sh' $PROFILE; then
|
||||
else
|
||||
echo "=> Source string already in $PROFILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "=> Close and reopen your terminal to start using NVM"
|
||||
echo "=> Close and reopen your terminal to start using nvm"
|
||||
|
||||
|
||||
9
nvm-exec
9
nvm-exec
@@ -4,12 +4,11 @@ DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
source "$DIR/nvm.sh"
|
||||
|
||||
if [ ! "$NODE_VERSION" ]; then
|
||||
echo 'NODE_VERSION not set'
|
||||
exit 1
|
||||
if [ -n "$NODE_VERSION" ]; then
|
||||
nvm use $NODE_VERSION || (echo "NODE_VERSION not set" && exit 127)
|
||||
else
|
||||
nvm use || (echo "No .nvmrc file found" && exit 127)
|
||||
fi
|
||||
|
||||
nvm use $NODE_VERSION
|
||||
|
||||
exec $@
|
||||
|
||||
|
||||
131
nvm.sh
131
nvm.sh
@@ -5,6 +5,8 @@
|
||||
# Implemented by Tim Caswell <tim@creationix.com>
|
||||
# with much bash help from Matthew Ranney
|
||||
|
||||
NVM_SCRIPT_SOURCE="$_"
|
||||
|
||||
nvm_has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
return $?
|
||||
@@ -17,14 +19,15 @@ if nvm_has "unsetopt"; then
|
||||
NVM_CD_FLAGS="-q"
|
||||
fi
|
||||
|
||||
# Auto detect the NVM_DIR
|
||||
if [ ! -d "$NVM_DIR" ]; then
|
||||
# Auto detect the NVM_DIR when not set
|
||||
if [ -z "$NVM_DIR" ]; then
|
||||
if [ -n "$BASH_SOURCE" ]; then
|
||||
export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname ${BASH_SOURCE[0]:-$0}) > /dev/null && pwd)
|
||||
else
|
||||
export NVM_DIR=$HOME/.nvm
|
||||
NVM_SCRIPT_SOURCE="${BASH_SOURCE[0]}"
|
||||
fi
|
||||
export NVM_DIR=$(cd $NVM_CD_FLAGS $(dirname "${NVM_SCRIPT_SOURCE:-$0}") > /dev/null && pwd)
|
||||
fi
|
||||
unset NVM_SCRIPT_SOURCE 2> /dev/null
|
||||
|
||||
|
||||
# Setup mirror location if not already set
|
||||
if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
|
||||
@@ -34,8 +37,8 @@ fi
|
||||
# Obtain nvm version from rc file
|
||||
nvm_rc_version() {
|
||||
if [ -e .nvmrc ]; then
|
||||
RC_VERSION=`cat .nvmrc | head -n 1`
|
||||
echo "Found .nvmrc files with version <$RC_VERSION>"
|
||||
NVM_RC_VERSION=`cat .nvmrc | head -n 1`
|
||||
echo "Found .nvmrc files with version <$NVM_RC_VERSION>"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -67,6 +70,21 @@ nvm_remote_version() {
|
||||
fi
|
||||
}
|
||||
|
||||
nvm_normalize_version() {
|
||||
echo "$1" | sed -e 's/^v//' | awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'
|
||||
}
|
||||
|
||||
nvm_format_version() {
|
||||
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
|
||||
}
|
||||
|
||||
nvm_binary_available() {
|
||||
# binaries started with node 0.8.6
|
||||
local MINIMAL="0.8.6"
|
||||
local VERSION=$1
|
||||
[ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
|
||||
}
|
||||
|
||||
nvm_ls() {
|
||||
local PATTERN=$1
|
||||
local VERSIONS=''
|
||||
@@ -83,7 +101,7 @@ nvm_ls() {
|
||||
if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then
|
||||
VERSIONS="$PATTERN"
|
||||
else
|
||||
VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "v$PATTERN*" -exec basename '{}' ';' \
|
||||
VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "$(nvm_format_version $PATTERN)*" -exec basename '{}' ';' \
|
||||
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
|
||||
fi
|
||||
if [ -z "$VERSIONS" ]; then
|
||||
@@ -99,9 +117,7 @@ nvm_ls_remote() {
|
||||
local VERSIONS
|
||||
local GREP_OPTIONS=''
|
||||
if [ -n "$PATTERN" ]; then
|
||||
if echo "${PATTERN}" | \grep -v '^v' ; then
|
||||
PATTERN=v$PATTERN
|
||||
fi
|
||||
PATTERN=`nvm_format_version "$PATTERN"`
|
||||
else
|
||||
PATTERN=".*"
|
||||
fi
|
||||
@@ -142,7 +158,7 @@ nvm_print_versions() {
|
||||
local FORMAT
|
||||
local CURRENT=`nvm_version current`
|
||||
echo "$1" | while read VERSION; do
|
||||
if [ "$VERSION" == "$CURRENT" ]; then
|
||||
if [ "$VERSION" = "$CURRENT" ]; then
|
||||
FORMAT='\033[0;32m-> %9s\033[0m'
|
||||
elif [ -d "$NVM_DIR/$VERSION" ]; then
|
||||
FORMAT='\033[0;34m%12s\033[0m'
|
||||
@@ -189,10 +205,10 @@ nvm() {
|
||||
echo "Usage:"
|
||||
echo " nvm help Show this message"
|
||||
echo " nvm --version Print out the latest released version of nvm"
|
||||
echo " nvm install [-s] <version> Download and install a <version>, [-s] from source"
|
||||
echo " nvm install [-s] <version> Download and install a <version>, [-s] from source. Uses .nvmrc if available"
|
||||
echo " nvm uninstall <version> Uninstall a version"
|
||||
echo " nvm use <version> Modify PATH to use <version>"
|
||||
echo " nvm run <version> [<args>] Run <version> with <args> as arguments"
|
||||
echo " nvm use <version> Modify PATH to use <version>. Uses .nvmrc if available"
|
||||
echo " nvm run <version> [<args>] Run <version> with <args> as arguments. Uses .nvmrc if available for <version>"
|
||||
echo " nvm current Display currently activated version"
|
||||
echo " nvm ls List installed versions"
|
||||
echo " nvm ls <version> List versions matching a given description"
|
||||
@@ -222,15 +238,22 @@ nvm() {
|
||||
local sum
|
||||
local tarball
|
||||
local nobinary
|
||||
local version_not_provided=0
|
||||
local provided_version
|
||||
|
||||
if ! nvm_has "curl"; then
|
||||
echo 'NVM Needs curl to proceed.' >&2;
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
version_not_provided=1
|
||||
nvm_rc_version
|
||||
if [ -z "$NVM_RC_VERSION" ]; then
|
||||
nvm help
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
shift
|
||||
|
||||
@@ -244,9 +267,16 @@ nvm() {
|
||||
nobinary=1
|
||||
fi
|
||||
|
||||
[ -d "$NVM_DIR/$1" ] && echo "$1 is already installed." && return
|
||||
provided_version=$1
|
||||
if [ -z "$provided_version" ]; then
|
||||
if [ $version_not_provided -ne 1 ]; then
|
||||
nvm_rc_version
|
||||
fi
|
||||
provided_version="$NVM_RC_VERSION"
|
||||
fi
|
||||
[ -d "$NVM_DIR/$provided_version" ] && echo "$provided_version is already installed." && return
|
||||
|
||||
VERSION=`nvm_remote_version $1`
|
||||
VERSION=`nvm_remote_version $provided_version`
|
||||
ADDITIONAL_PARAMETERS=''
|
||||
|
||||
shift
|
||||
@@ -263,14 +293,7 @@ nvm() {
|
||||
if [ $nobinary -ne 1 ]; then
|
||||
# shortcut - try the binary if possible.
|
||||
if [ -n "$os" ]; then
|
||||
binavail=
|
||||
# binaries started with node 0.8.6
|
||||
case "$VERSION" in
|
||||
v0.8.[012345]) binavail=0 ;;
|
||||
v0.[1234567].*) binavail=0 ;;
|
||||
*) binavail=1 ;;
|
||||
esac
|
||||
if [ $binavail -eq 1 ]; then
|
||||
if nvm_binary_available "$VERSION"; then
|
||||
t="$VERSION-$os-$arch"
|
||||
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}'`
|
||||
@@ -347,12 +370,13 @@ nvm() {
|
||||
;;
|
||||
"uninstall" )
|
||||
[ $# -ne 2 ] && nvm help && return
|
||||
if [ "$2" = `nvm_version` ]; then
|
||||
echo "nvm: Cannot uninstall currently-active node version, $2."
|
||||
PATTERN=`nvm_format_version $2`
|
||||
if [ "$PATTERN" = `nvm_version` ]; then
|
||||
echo "nvm: Cannot uninstall currently-active node version, $PATTERN."
|
||||
return 1
|
||||
fi
|
||||
VERSION=`nvm_version $2`
|
||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
||||
VERSION=`nvm_version $PATTERN`
|
||||
if [ ! -d $NVM_DIR/$VERSION ]; then
|
||||
echo "$VERSION version is not installed..."
|
||||
return;
|
||||
fi
|
||||
@@ -398,19 +422,19 @@ nvm() {
|
||||
"use" )
|
||||
if [ $# -eq 0 ]; then
|
||||
nvm help
|
||||
return
|
||||
return 127
|
||||
fi
|
||||
if [ $# -eq 1 ]; then
|
||||
nvm_rc_version
|
||||
if [ -n "$RC_VERSION" ]; then
|
||||
VERSION=`nvm_version $RC_VERSION`
|
||||
if [ -n "$NVM_RC_VERSION" ]; then
|
||||
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||
fi
|
||||
else
|
||||
VERSION=`nvm_version $2`
|
||||
fi
|
||||
if [ -z "$VERSION" ]; then
|
||||
nvm help
|
||||
return
|
||||
return 127
|
||||
fi
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=`nvm_version $2`
|
||||
@@ -447,12 +471,37 @@ nvm() {
|
||||
echo "Now using node $VERSION"
|
||||
;;
|
||||
"run" )
|
||||
local provided_version
|
||||
local has_checked_nvmrc=0
|
||||
# run given version of node
|
||||
if [ $# -lt 2 ]; then
|
||||
nvm help
|
||||
return
|
||||
shift
|
||||
if [ $# -lt 1 ]; then
|
||||
nvm_rc_version && has_checked_nvmrc=1
|
||||
if [ -n "$NVM_RC_VERSION" ]; then
|
||||
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||
else
|
||||
VERSION='N/A'
|
||||
fi
|
||||
VERSION=`nvm_version $2`
|
||||
if [ $VERSION = "N/A" ]; then
|
||||
nvm help
|
||||
return 127
|
||||
fi
|
||||
fi
|
||||
|
||||
provided_version=$1
|
||||
if [ -n "$provided_version" ]; then
|
||||
VERSION=`nvm_version $provided_version`
|
||||
if [ $VERSION = "N/A" ]; then
|
||||
provided_version=''
|
||||
if [ $has_checked_nvmrc -ne 1 ]; then
|
||||
nvm_rc_version && has_checked_nvmrc=1
|
||||
fi
|
||||
VERSION=`nvm_version $NVM_RC_VERSION`
|
||||
else
|
||||
shift
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
||||
echo "$VERSION version is not installed yet"
|
||||
return;
|
||||
@@ -463,7 +512,7 @@ nvm() {
|
||||
RUN_NODE_PATH="$NVM_DIR/$VERSION/lib/node_modules:$NODE_PATH"
|
||||
fi
|
||||
echo "Running node $VERSION"
|
||||
NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "${@:3}"
|
||||
NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@"
|
||||
;;
|
||||
"ls" | "list" )
|
||||
nvm_print_versions "`nvm_ls $2`"
|
||||
@@ -515,7 +564,7 @@ nvm() {
|
||||
;;
|
||||
"unalias" )
|
||||
mkdir -p $NVM_DIR/alias
|
||||
[ $# -ne 2 ] && nvm help && return
|
||||
[ $# -ne 2 ] && nvm help && return 127
|
||||
[ ! -f "$NVM_DIR/alias/$2" ] && echo "Alias $2 doesn't exist!" && return
|
||||
rm -f $NVM_DIR/alias/$2
|
||||
echo "Deleted alias $2"
|
||||
@@ -523,7 +572,7 @@ nvm() {
|
||||
"copy-packages" )
|
||||
if [ $# -ne 2 ]; then
|
||||
nvm help
|
||||
return
|
||||
return 127
|
||||
fi
|
||||
VERSION=`nvm_version $2`
|
||||
local ROOT=`(nvm use $VERSION && npm -g root)`
|
||||
@@ -543,7 +592,7 @@ nvm() {
|
||||
nvm_version $2
|
||||
;;
|
||||
"--version" )
|
||||
echo "nvm v0.3.0"
|
||||
echo "nvm v0.5.1"
|
||||
;;
|
||||
* )
|
||||
nvm help
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nvm",
|
||||
"version": "0.2.0",
|
||||
"version": "0.5.1",
|
||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
|
||||
@@ -7,4 +7,6 @@ mkdir ../../../v0.2.3
|
||||
|
||||
# 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 -v v0.2.3 &&
|
||||
nvm ls 0.1 | grep v0.1.3 &&
|
||||
nvm ls v0.2 | grep v0.2.3
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../nvm.sh
|
||||
[ "$(nvm current)" = `node -v` ] || die "Failed to find current version"
|
||||
[ "$(nvm current)" = "$(node -v)" ] || die "Failed to find current version"
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../nvm.sh
|
||||
|
||||
VERSION=v0.10.26
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../$VERSION ] && rm -R ../../$VERSION
|
||||
|
||||
# Install from binary
|
||||
nvm install $VERSION
|
||||
|
||||
# Check
|
||||
[ -d ../../$VERSION ]
|
||||
nvm run $VERSION --version | grep $VERSION
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../nvm.sh
|
||||
|
||||
VERSION=v0.10.26
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../$VERSION ] && rm -R ../../$VERSION
|
||||
|
||||
# Install from source
|
||||
nvm install -s $VERSION
|
||||
|
||||
# Check
|
||||
[ -d ../../$VERSION ]
|
||||
nvm run $VERSION --version | grep $VERSION
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../nvm.sh
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../v0.10.25 ] && rm -R ../../v0.10.25
|
||||
[ -e ../../v0.10.26 ] && rm -R ../../v0.10.26
|
||||
|
||||
# Install from binary
|
||||
nvm install 0.10.25
|
||||
nvm install 0.10.26
|
||||
|
||||
# Check
|
||||
[ -d ../../v0.10.25 ]
|
||||
[ -d ../../v0.10.26 ]
|
||||
|
||||
# Use the first one
|
||||
nvm use 0.10.25
|
||||
|
||||
# Use the latest one
|
||||
nvm use 0.10
|
||||
node --version | grep v0.10.26
|
||||
17
test/slow/nvm install/install from binary
Executable file
17
test/slow/nvm install/install from binary
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../../nvm.sh
|
||||
|
||||
NVM_TEST_VERSION=v0.10.7
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
|
||||
|
||||
# Install from binary
|
||||
nvm install $NVM_TEST_VERSION
|
||||
|
||||
# Check
|
||||
[ -d ../../../$NVM_TEST_VERSION ]
|
||||
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||
|
||||
17
test/slow/nvm install/install from source
Executable file
17
test/slow/nvm install/install from source
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../../nvm.sh
|
||||
|
||||
NVM_TEST_VERSION=v0.10.7
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
|
||||
|
||||
# Install from source
|
||||
nvm install -s $NVM_TEST_VERSION
|
||||
|
||||
# Check
|
||||
[ -d ../../../$NVM_TEST_VERSION ]
|
||||
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||
|
||||
24
test/slow/nvm install/install two versions and use the latest one
Executable file
24
test/slow/nvm install/install two versions and use the latest one
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../../nvm.sh
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../../v0.9.7 ] && rm -R ../../../v0.9.7
|
||||
[ -e ../../../v0.9.12 ] && rm -R ../../../v0.9.12
|
||||
|
||||
# Install from binary
|
||||
nvm install 0.9.7
|
||||
nvm install 0.9.12
|
||||
|
||||
# Check
|
||||
[ -d ../../../v0.9.7 ]
|
||||
[ -d ../../../v0.9.12 ]
|
||||
|
||||
# Use the first one
|
||||
nvm use 0.9.7
|
||||
|
||||
# Use the latest one
|
||||
nvm use 0.9
|
||||
node --version | grep v0.9.12
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../../nvm.sh
|
||||
|
||||
NVM_TEST_VERSION=v0.10.7
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
|
||||
|
||||
# Install from binary
|
||||
cat "$NVM_TEST_VERSION" > .nvmrc
|
||||
|
||||
nvm install
|
||||
|
||||
# Check
|
||||
[ -d ../../../$NVM_TEST_VERSION ]
|
||||
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
. ../../../nvm.sh
|
||||
|
||||
NVM_TEST_VERSION=v0.10.7
|
||||
|
||||
# Remove the stuff we're clobbering.
|
||||
[ -e ../../../$NVM_TEST_VERSION ] && rm -R ../../../$NVM_TEST_VERSION
|
||||
|
||||
# Install from binary
|
||||
cat "$NVM_TEST_VERSION" > .nvmrc
|
||||
|
||||
nvm install -s
|
||||
|
||||
# Check
|
||||
[ -d ../../../$NVM_TEST_VERSION ]
|
||||
nvm run $NVM_TEST_VERSION --version | grep $NVM_TEST_VERSION
|
||||
|
||||
|
||||
6
test/slow/nvm install/setup_dir
Executable file
6
test/slow/nvm install/setup_dir
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -f ".nvmrc" ]; then
|
||||
mv .nvmrc .nvmrc.bak
|
||||
fi
|
||||
|
||||
13
test/slow/nvm install/teardown_dir
Executable file
13
test/slow/nvm install/teardown_dir
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ../../../nvm.sh
|
||||
nvm uninstall v0.10.7
|
||||
|
||||
if [ -f ".nvmrc" ]; then
|
||||
rm .nvmrc
|
||||
fi
|
||||
|
||||
if [ -f ".nvmrc.bak" ]; then
|
||||
mv .nvmrc.bak .nvmrc
|
||||
fi
|
||||
|
||||
9
test/slow/nvm run/Running "nvm run 0.x" should work
Executable file
9
test/slow/nvm run/Running "nvm run 0.x" should work
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../../nvm.sh
|
||||
|
||||
[ "$(nvm run 0.10.7 --version | tail -1)" = "v0.10.7" ] || die "`nvm run` failed to run with the correct version"
|
||||
|
||||
12
test/slow/nvm run/Running "nvm run" should pick up .nvmrc version
Executable file
12
test/slow/nvm run/Running "nvm run" should pick up .nvmrc version
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
die () { echo $@ ; exit 1; }
|
||||
|
||||
. ../../../nvm.sh
|
||||
|
||||
echo "0.10.7" > .nvmrc
|
||||
[ "$(nvm run --version | tail -1)" = "v0.10.7" ] || die "`nvm run` failed to run with the .nvmrc version"
|
||||
|
||||
[ "$(nvm run --version | head -1)" = "Found .nvmrc files with version <0.10.7>" ] || die "`nvm run` failed to print out the \"found in .nvmrc\" message"
|
||||
|
||||
9
test/slow/nvm run/setup_dir
Executable file
9
test/slow/nvm run/setup_dir
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ../../../nvm.sh
|
||||
nvm install 0.10.7
|
||||
|
||||
if [ -f ".nvmrc" ]; then
|
||||
mv .nvmrc .nvmrc.bak
|
||||
fi
|
||||
|
||||
11
test/slow/nvm run/teardown_dir
Executable file
11
test/slow/nvm run/teardown_dir
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ../../../nvm.sh
|
||||
nvm uninstall v0.10.7
|
||||
|
||||
rm .nvmrc
|
||||
|
||||
if [ -f ".nvmrc.bak" ]; then
|
||||
mv .nvmrc.bak .nvmrc
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user