Adding nvm_resolve_alias

master
Jordan Harband 2014-10-22 01:30:19 -07:00
parent 08aa09e664
commit 7a339bdd3c
2 changed files with 56 additions and 7 deletions

35
nvm.sh
View File

@ -270,6 +270,32 @@ nvm_ls_current() {
fi
}
nvm_resolve_alias() {
if [ -z "$1" ]; then
return 1
fi
local PATTERN
PATTERN="$1"
if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
nvm_version "$(nvm_alias "$PATTERN" 2> /dev/null)"
return 0
fi
if nvm_validate_implicit_alias "$PATTERN" 2> /dev/null ; then
local IMPLICIT
IMPLICIT="$(nvm_print_implicit_alias local "$PATTERN" 2> /dev/null)"
if [ -n "$IMPLICIT" ]; then
nvm_version "$IMPLICIT"
return $?
fi
return 3
fi
return 2
}
nvm_ls() {
local PATTERN
PATTERN=$1
@ -280,10 +306,10 @@ nvm_ls() {
return
fi
if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
nvm_version "$(nvm_alias "$PATTERN" 2> /dev/null)"
if nvm_resolve_alias "$PATTERN"; then
return
fi
# If it looks like an explicit version, don't do anything funny
PATTERN=$(nvm_ensure_version_prefix $PATTERN)
if [ "_$(echo "$PATTERN" | cut -c1-1)" = "_v" ] && [ "_$(nvm_num_version_groups "$PATTERN")" = "_3" ]; then
@ -292,11 +318,6 @@ nvm_ls() {
fi
else
if [ "_$PATTERN" != "_system" ]; then
if nvm_validate_implicit_alias "$PATTERN" 2> /dev/null ; then
nvm_ls "$(nvm_print_implicit_alias local "$PATTERN" 2> /dev/null)"
return $?
fi
local NUM_VERSION_GROUPS
NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then

View File

@ -0,0 +1,28 @@
#!/bin/sh
die () { echo $@ ; exit 1; }
. ../../../nvm.sh
EXIT_CODE=$(nvm_resolve_alias ; echo $?)
[ $EXIT_CODE = "1" ] || die "nvm_resolve_alias without an argument did not return 1; got $EXIT_CODE"
for i in $(seq 1 10)
do
STABLE_ALIAS="$(nvm_resolve_alias test-stable-$i)"
[ "_$STABLE_ALIAS" = "_v0.0.$i" ] \
|| die "'nvm_resolve_alias test-stable-$i' was not v0.0.$i; got $STABLE_ALIAS"
UNSTABLE_ALIAS="$(nvm_resolve_alias test-unstable-$i)"
[ "_$UNSTABLE_ALIAS" = "_v0.1.$i" ] \
|| die "'nvm_resolve_alias test-unstable-$i' was not v0.1.$i; got $UNSTABLE_ALIAS"
done
EXIT_CODE=$(nvm_resolve_alias nonexistent ; echo $?)
[ $EXIT_CODE = "2" ] || die "'nvm_resolve_alias nonexistent' did not return 2; got $EXIT_CODE"
STABLE="$(nvm_resolve_alias stable)"
[ "_$STABLE" = "_v0.0.10" ] || die "'nvm_resolve_alias stable' was not v0.0.10; got $STABLE"
UNSTABLE="$(nvm_resolve_alias unstable)"
[ "_$UNSTABLE" = "_v0.1.10" ] || die "'nvm_resolve_alias unstable' was not v0.1.10; got $UNSTABLE"