@ -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