Browse Source

Show all available versions in ls

Adds a cache of all versions available on nodejs.org using simple empty files as placeholders. When a new version is installed, it will replace the placeholder with a directory.

This makes it easier for users to see what versions are available for install, and what the latest and stable versions are.
master
Isaac Wolkerstorfer 14 years ago
parent
commit
b2c6be9e08
  1. 69
      nvm.sh

69
nvm.sh

@ -8,6 +8,41 @@ @@ -8,6 +8,41 @@
# Auto detect the NVM_DIR using magic bash 3.x stuff
export NVM_DIR=$(dirname ${BASH_ARGV[0]})
# Expand a version using the version cache
version()
{
PATTERN=$1
VERSION=''
# If it looks like an explicit version, don't do anything funny
if [[ $PATTERN == v*.*.* ]]; then
VERSION=$PATTERN
fi
# The default version is the current one
if [ ! $PATTERN -o $PATTERN = 'current' ]; then
VERSION=`node -v 2>/dev/null`
fi
if [ $PATTERN = 'stable' ]; then
PATTERN='*.*[02468].'
fi
if [ $PATTERN = 'latest' ]; then
PATTERN='*.*.'
fi
if [ $PATTERN = 'all' ]; then
(cd $NVM_DIR; ls -dG v* 2>/dev/null || echo "N/A")
return
fi
if [ ! "$VERSION" ]; then
VERSION=`(cd $NVM_DIR; ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1`
fi
if [ ! "$VERSION" ]; then
echo "N/A"
elif [ -e "$NVM_DIR/$VERSION" ]; then
(cd $NVM_DIR; ls -dG $VERSION)
else
echo "$VERSION"
fi
}
nvm()
{
if [ $# -lt 1 ]; then
@ -23,8 +58,10 @@ nvm() @@ -23,8 +58,10 @@ nvm()
echo " nvm help Show this message"
echo " nvm install <version> Download and install a <version>"
echo " nvm use <version> Modify PATH to use <version>"
echo " nvm ls List versions currently installed"
echo " nvm ls List versions (installed versions are blue)"
echo " nvm ls <version> List versions matching a given description"
echo " nvm deactivate Undo effects of NVM on current shell"
echo " nvm sync Update the local cache of available versions"
echo
echo "Example:"
echo " nvm install v0.2.5"
@ -38,6 +75,7 @@ nvm() @@ -38,6 +75,7 @@ nvm()
fi
START=`pwd`
mkdir -p "$NVM_DIR/src" && \
rm -f "$NVM_DIR/$2" && \
cd "$NVM_DIR/src" && \
wget "http://nodejs.org/dist/node-$2.tar.gz" -N && \
tar -xzf "node-$2.tar.gz" && \
@ -93,16 +131,31 @@ nvm() @@ -93,16 +131,31 @@ nvm()
;;
"ls" )
if [ $# -ne 1 ]; then
nvm help
version $2
return;
fi
for f in $NVM_DIR/v*; do
if [[ $PATH == *$f/bin* ]]; then
echo "v${f##*v} *"
else
echo "v${f##*v}"
fi
version all
for P in {stable,latest,current}; do
echo -ne "$P: \t"; version $P
done
echo "# use 'nvm sync' to update from nodejs.org"
;;
"sync" )
(cd $NVM_DIR
rm -f v* 2>/dev/null
echo -n "Syncing with nodejs.org..."
for VER in `curl -s http://nodejs.org/dist/ | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`
do touch $VER
done
echo " done."
)
;;
"clear-cache" )
rm -f $NVM_DIR/v*
echo "Cache cleared."
;;
"version" )
version $2
;;
* )
nvm help

Loading…
Cancel
Save