This commit is contained in:
Koen Punt 2012-10-21 14:59:43 -07:00
commit 3dd3ea097a

47
nvm.sh
View File

@ -36,8 +36,10 @@ nvm_version()
# The default version is the current one # The default version is the current one
if [ ! "$PATTERN" ]; then if [ ! "$PATTERN" ]; then
PATTERN='current' PATTERN='current'
else
PATTERN=`nvm_format_version $PATTERN`
fi fi
VERSION=`nvm_ls $PATTERN | tail -n1` VERSION=`nvm_ls $PATTERN | tail -n1`
echo "$VERSION" echo "$VERSION"
@ -57,6 +59,27 @@ nvm_remote_version()
fi 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
MINIMAL="0.8.6"
VERSION=$1
if [ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]; then
echo "1"
fi
return
}
nvm_ls() nvm_ls()
{ {
PATTERN=$1 PATTERN=$1
@ -71,7 +94,7 @@ 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 [[ "$PATTERN" == v?*.?*.?* ]]; then if echo "$PATTERN" | grep 'v.*\..*\..*' ; then
VERSIONS="$PATTERN" VERSIONS="$PATTERN"
else else
VERSIONS=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 1.2,1n -k 2,2n -k 3,3n` VERSIONS=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 1.2,1n -k 2,2n -k 3,3n`
@ -88,9 +111,7 @@ nvm_ls_remote()
{ {
PATTERN=$1 PATTERN=$1
if [ "$PATTERN" ]; then if [ "$PATTERN" ]; then
if echo "${PATTERN}" | grep -v '^v' ; then PATTERN=`nvm_format_version "$PATTERN"`
PATTERN=v$PATTERN
fi
else else
PATTERN=".*" PATTERN=".*"
fi fi
@ -175,14 +196,7 @@ nvm()
# shortcut - try the binary if possible. # shortcut - try the binary if possible.
if [ -n "$os" ]; then if [ -n "$os" ]; then
binavail= if [[ `nvm_binary_available "$VERSION"` -eq 1 ]]; then
# 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
t="$VERSION-$os-$arch" t="$VERSION-$os-$arch"
url="http://nodejs.org/dist/$VERSION/node-${t}.tar.gz" url="http://nodejs.org/dist/$VERSION/node-${t}.tar.gz"
if ( if (
@ -245,11 +259,12 @@ nvm()
;; ;;
"uninstall" ) "uninstall" )
[ $# -ne 2 ] && nvm help && return [ $# -ne 2 ] && nvm help && return
if [[ $2 == `nvm_version` ]]; then PATTERN=`nvm_format_version $2`
echo "nvm: Cannot uninstall currently-active node version, $2." if [[ $PATTERN == `nvm_version` ]]; then
echo "nvm: Cannot uninstall currently-active node version, $PATTERN."
return return
fi fi
VERSION=`nvm_version $2` VERSION=`nvm_version $PATTERN`
if [ ! -d $NVM_DIR/$VERSION ]; then if [ ! -d $NVM_DIR/$VERSION ]; then
echo "$VERSION version is not installed yet... installing" echo "$VERSION version is not installed yet... installing"
nvm install $VERSION nvm install $VERSION