mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 10:15:53 +08:00 
			
		
		
		
	Merge pull request #382 from koenpunt/version-normalizing
Fix nvm ls for v* numbers
This commit is contained in:
		
							
								
								
									
										39
									
								
								nvm.sh
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								nvm.sh
									
									
									
									
									
								
							| @@ -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 | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user