Browse Source

Rewrote version listing system

Now sorts correctly in all instances and prints highlights
even in sorted views. Also will output a list of matching versions
for commands of the form nvm ls 0.4* rather than just printing one
version. nvm version 0.4 still prints the single latest matching
version, however.
master
Lucian Holland 13 years ago
parent
commit
fda6e7f8de
  1. 73
      nvm.sh

73
nvm.sh

@ -20,34 +20,56 @@ fi
nvm_version() nvm_version()
{ {
PATTERN=$1 PATTERN=$1
VERSION='' # The default version is the current one
if [ -f "$NVM_DIR/alias/$PATTERN" ]; then if [ ! "$PATTERN" ]; then
nvm_version `cat $NVM_DIR/alias/$PATTERN` PATTERN='current'
return
fi fi
# If it looks like an explicit version, don't do anything funny
if [[ "$PATTERN" == v?*.?*.?* ]]; then VERSION=`nvm_ls $PATTERN | tail -n1`
VERSION="$PATTERN" echo "$VERSION"
if [ "$VERSION" = 'N/A' ]; then
return 13
fi fi
# The default version is the current one }
if [ ! "$PATTERN" -o "$PATTERN" = 'current' ]; then
nvm_ls()
{
PATTERN=$1
VERSIONS=''
if [ "$PATTERN" = 'current' ]; then
VERSION=`node -v 2>/dev/null` VERSION=`node -v 2>/dev/null`
fi fi
if [ "$PATTERN" = 'all' ]; then
(cd $NVM_DIR; \ls -dG v* 2>/dev/null || echo "N/A") if [ -f "$NVM_DIR/alias/$PATTERN" ]; then
nvm_version `cat $NVM_DIR/alias/$PATTERN`
return return
fi fi
if [ ! "$VERSION" ]; then # If it looks like an explicit version, don't do anything funny
VERSION=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 1.2,1n -k 2,2n -k 3,3n | tail -n1` if [[ "$PATTERN" == v?*.?*.?* ]]; then
VERSIONS="$PATTERN"
else
VERSIONS=`(cd $NVM_DIR; \ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 1.2,1n -k 2,2n -k 3,3n`
fi fi
if [ ! "$VERSION" ]; then if [ ! "$VERSIONS" ]; then
echo "N/A" echo "N/A"
return 13 return
elif [ -e "$NVM_DIR/$VERSION" ]; then
(cd $NVM_DIR; \ls -dG "$VERSION")
else
echo "$VERSION"
fi fi
echo "$VERSIONS"
return
}
print_versions()
{
OUTPUT=''
for VERSION in $1; do
PADDED_VERSION=`printf '%10s' $VERSION`
if [[ -d "$NVM_DIR/$VERSION" ]]; then
PADDED_VERSION="\033[0;34m$PADDED_VERSION\033[0m"
fi
OUTPUT="$OUTPUT\n$PADDED_VERSION"
done
echo -e "$OUTPUT" | column
} }
nvm() nvm()
@ -189,13 +211,12 @@ nvm()
echo "Now using node $VERSION" echo "Now using node $VERSION"
;; ;;
"ls" | "list" ) "ls" | "list" )
if [ $# -ne 1 ]; then print_versions "`nvm_ls $2`"
nvm_version $2 if [ $# -eq 1 ]; then
return echo -ne "current: \t"; nvm_version current
nvm alias
fi fi
nvm_version all return
echo -ne "current: \t"; nvm_version current
nvm alias
;; ;;
"alias" ) "alias" )
mkdir -p $NVM_DIR/alias mkdir -p $NVM_DIR/alias
@ -250,7 +271,7 @@ nvm()
echo "Cache cleared." echo "Cache cleared."
;; ;;
"version" ) "version" )
nvm_version $2 print_versions "`nvm_version $2`"
;; ;;
* ) * )
nvm help nvm help

Loading…
Cancel
Save