From: Antono Vasiljev Date: Thu, 25 Aug 2011 13:45:51 +0000 (+0300) Subject: Updated nvm.plugin.bash X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=18bcceaa0860366d8fced94759dfd12fdd4ca217;p=common%2Fbash_it.git Updated nvm.plugin.bash --- diff --git a/plugins/available/nvm.plugin.bash b/plugins/available/nvm.plugin.bash index a02722e..a5145ec 100644 --- a/plugins/available/nvm.plugin.bash +++ b/plugins/available/nvm.plugin.bash @@ -4,7 +4,6 @@ # # Implemented by Tim Caswell # with much bash help from Matthew Ranney -# https://github.com/creationix/nvm export NVM_DIR=$HOME/.nvm @@ -89,6 +88,7 @@ nvm() echo "Usage:" echo " nvm help Show this message" echo " nvm install Download and install a " + echo " nvm uninstall Uninstall a version" echo " nvm use Modify PATH to use " echo " nvm ls List versions (installed versions are blue)" echo " nvm ls List versions matching a given description" @@ -96,13 +96,15 @@ nvm() echo " nvm sync Update the local cache of available versions" echo " nvm alias [] Show all aliases beginning with " echo " nvm alias Set an alias named pointing to " + echo " nvm unalias Deletes the alias named " + echo " nvm copy-packages Install global NPM packages contained in to current version" echo echo "Example:" echo " nvm install v0.4.0 Install a specific version number" echo " nvm use stable Use the stable release" echo " nvm install latest Install the latest, possibly unstable version" echo " nvm use 0.2 Use the latest available 0.2.x release" - echo " nvm alias default v0.4.0 Set v0.4.0 as the default" + echo " nvm alias default v0.4.0 Set v0.4.0 as the default" echo ;; "install" ) @@ -112,10 +114,17 @@ nvm() fi [ "$NOCURL" ] && curl && return VERSION=`nvm_version $2` + tarball='' + if [ "`curl -Is "http://nodejs.org/dist/$VERSION/node-$VERSION.tar.gz" | grep '200 OK'`" != '' ]; then + tarball="http://nodejs.org/dist/$VERSION/node-$VERSION.tar.gz" + elif [ "`curl -Is "http://nodejs.org/dist/node-$VERSION.tar.gz" | grep '200 OK'`" != '' ]; then + tarball="http://nodejs.org/dist/node-$VERSION.tar.gz" + fi if ( + [ ! -z $tarball ] && \ mkdir -p "$NVM_DIR/src" && \ cd "$NVM_DIR/src" && \ - curl -C - -# "http://nodejs.org/dist/node-$VERSION.tar.gz" -o "node-$VERSION.tar.gz" && \ + curl -C - -# $tarball -o "node-$VERSION.tar.gz" && \ tar -xzf "node-$VERSION.tar.gz" && \ cd "node-$VERSION" && \ ./configure --prefix="$NVM_DIR/$VERSION" && \ @@ -134,6 +143,36 @@ nvm() echo "nvm: install $VERSION failed!" fi ;; + "uninstall" ) + [ $# -ne 2 ] && nvm help && return + if [[ $2 == `nvm_version` ]]; then + echo "nvm: Cannot uninstall currently-active node version, $2." + return + fi + VERSION=`nvm_version $2` + if [ ! -d $NVM_DIR/$VERSION ]; then + echo "$VERSION version is not installed yet" + return; + fi + + # Delete all files related to target version. + (cd "$NVM_DIR" && \ + rm -rf "node-$VERSION" 2>/dev/null && \ + mkdir -p "$NVM_DIR/src" && \ + cd "$NVM_DIR/src" && \ + rm -f "node-$VERSION.tar.gz" 2>/dev/null && \ + rm -rf "$NVM_DIR/$VERSION" 2>/dev/null) + echo "Uninstalled node $VERSION" + + # Rm any aliases that point to uninstalled version. + for A in `grep -l $VERSION $NVM_DIR/alias/*` + do + nvm unalias `basename $A` + done + + # Run sync in order to restore version stub file in $NVM_DIR. + nvm sync 1>/dev/null + ;; "deactivate" ) if [[ $PATH == *$NVM_DIR/*/bin* ]]; then export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:} @@ -210,7 +249,7 @@ nvm() mkdir -p $NVM_DIR/alias VERSION=`nvm_version $3` if [ $? -ne 0 ]; then - echo "! WARNING: Version '$3' does not exist." >&2 + echo "! WARNING: Version '$3' does not exist." >&2 fi echo $3 > "$NVM_DIR/alias/$2" if [ ! "$3" = "$VERSION" ]; then @@ -220,6 +259,13 @@ nvm() echo "$2 -> $3" fi ;; + "unalias" ) + mkdir -p $NVM_DIR/alias + [ $# -ne 2 ] && nvm help && return + [ ! -f $NVM_DIR/alias/$2 ] && echo "Alias $2 doesn't exist!" && return + rm -f $NVM_DIR/alias/$2 + echo "Deleted alias $2" + ;; "sync" ) [ "$NOCURL" ] && curl && return LATEST=`nvm_version latest` @@ -227,7 +273,7 @@ nvm() (cd $NVM_DIR rm -f v* 2>/dev/null printf "# syncing with nodejs.org..." - for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`; do + for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'v[0-9].*' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//' -e 's/<[^>]*>//' -e 's/\/<[^>]*>.*//'`; do touch $VER done echo " done." @@ -235,6 +281,16 @@ nvm() [ "$STABLE" = `nvm_version stable` ] || echo "NEW stable: `nvm_version stable`" [ "$LATEST" = `nvm_version latest` ] || echo "NEW latest: `nvm_version latest`" ;; + "copy-packages" ) + if [ $# -ne 2 ]; then + nvm help + return + fi + VERSION=`nvm_version $2` + ROOT=`nvm use $VERSION && npm -g root` + INSTALLS=`nvm use $VERSION > /dev/null && npm -g -p ll | grep "$ROOT\/[^/]\+$" | cut -d '/' -f 8 | cut -d ":" -f 2 | grep -v npm | tr "\n" " "` + npm install -g $INSTALLS + ;; "clear-cache" ) rm -f $NVM_DIR/v* 2>/dev/null echo "Cache cleared."