Merge pull request #382 from koenpunt/version-normalizing

Fix nvm ls for v* numbers
master
Jordan Harband 2014-03-21 09:30:19 -07:00
commit ba1e2f1cdf
2 changed files with 26 additions and 17 deletions

39
nvm.sh
View File

@ -70,6 +70,21 @@ 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
local MINIMAL="0.8.6"
local VERSION=$1
[ $(nvm_normalize_version $VERSION) -ge $(nvm_normalize_version $MINIMAL) ]
}
nvm_ls() { nvm_ls() {
local PATTERN=$1 local PATTERN=$1
local VERSIONS='' local VERSIONS=''
@ -86,7 +101,7 @@ nvm_ls() {
if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then
VERSIONS="$PATTERN" VERSIONS="$PATTERN"
else 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` | sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
fi fi
if [ -z "$VERSIONS" ]; then if [ -z "$VERSIONS" ]; then
@ -102,9 +117,7 @@ nvm_ls_remote() {
local VERSIONS local VERSIONS
local GREP_OPTIONS='' local GREP_OPTIONS=''
if [ -n "$PATTERN" ]; then if [ -n "$PATTERN" ]; then
if echo "${PATTERN}" | \grep -v '^v' ; then PATTERN=`nvm_format_version "$PATTERN"`
PATTERN=v$PATTERN
fi
else else
PATTERN=".*" PATTERN=".*"
fi fi
@ -267,14 +280,7 @@ nvm() {
if [ $nobinary -ne 1 ]; then if [ $nobinary -ne 1 ]; then
# 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"; 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="$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=`curl -s $NVM_NODEJS_ORG_MIRROR/$VERSION/SHASUMS.txt | \grep node-${t}.tar.gz | awk '{print $1}'`
@ -351,12 +357,13 @@ 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 1 return 1
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..." echo "$VERSION version is not installed..."
return; return;
fi fi

View File

@ -7,4 +7,6 @@ mkdir ../../../v0.2.3
# 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.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