From 78c9dc53bc17f2e7cca715bd37a9f7c9d1579019 Mon Sep 17 00:00:00 2001 From: Evan Meagher Date: Sun, 10 Apr 2011 15:55:51 -0700 Subject: [PATCH 1/5] Add uninstall command. --- nvm.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/nvm.sh b/nvm.sh index 6f107ec..da570cd 100644 --- a/nvm.sh +++ b/nvm.sh @@ -82,6 +82,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" @@ -126,6 +127,33 @@ 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" && \ + mkdir -p "$NVM_DIR/src" && \ + 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) + + # TODO: Should rm any aliases that point to uninstalled version. + + # Run sync in order to restore version stub file in $NVM_DIR. + nvm sync 1>/dev/null + echo "Uninstalled node $VERSION" + ;; "deactivate" ) if [[ $PATH == *$NVM_DIR/*/bin* ]]; then export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:} From 684b38ecab6d02e7e5657f8527f1096cca83f3f2 Mon Sep 17 00:00:00 2001 From: Evan Meagher Date: Sun, 10 Apr 2011 15:56:18 -0700 Subject: [PATCH 2/5] Add unalias command. --- nvm.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nvm.sh b/nvm.sh index da570cd..b01e03a 100644 --- a/nvm.sh +++ b/nvm.sh @@ -90,6 +90,7 @@ 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 echo "Example:" echo " nvm install v0.4.0 Install a specific version number" @@ -238,6 +239,12 @@ nvm() echo "$2 -> $3" fi ;; + "unalias" ) + mkdir -p $NVM_DIR/alias + [ $# -ne 2 ] && nvm help && return + rm -f $NVM_DIR/alias/$2 + echo "Deleted alias $2" + ;; "sync" ) [ "$NOCURL" ] && curl && return LATEST=`nvm_version latest` From d24f7ca880c1cffa5227a6cfc4941b772e0f21b5 Mon Sep 17 00:00:00 2001 From: Evan Meagher Date: Sun, 10 Apr 2011 18:43:46 -0700 Subject: [PATCH 3/5] Error and return on attempt to unalias nonexistent alias. --- nvm.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/nvm.sh b/nvm.sh index b01e03a..7d7f13a 100644 --- a/nvm.sh +++ b/nvm.sh @@ -242,6 +242,7 @@ nvm() "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" ;; From 90714dcd3ec402f70bec38274aab42aba252d5dc Mon Sep 17 00:00:00 2001 From: Evan Meagher Date: Mon, 11 Apr 2011 16:07:04 -0700 Subject: [PATCH 4/5] Rm aliases that point to uninstalled versions. --- nvm.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/nvm.sh b/nvm.sh index 7d7f13a..5042609 100644 --- a/nvm.sh +++ b/nvm.sh @@ -148,12 +148,16 @@ nvm() 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" - # TODO: Should rm any aliases that point to uninstalled 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 - echo "Uninstalled node $VERSION" ;; "deactivate" ) if [[ $PATH == *$NVM_DIR/*/bin* ]]; then From ab38befff1b67f905cd41a454b1c85bbd9faa8ff Mon Sep 17 00:00:00 2001 From: Evan Meagher Date: Tue, 7 Jun 2011 10:57:58 -0700 Subject: [PATCH 5/5] Remove extraneous mkdir. --- nvm.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/nvm.sh b/nvm.sh index 5042609..33449c6 100644 --- a/nvm.sh +++ b/nvm.sh @@ -142,12 +142,11 @@ nvm() # Delete all files related to target version. (cd "$NVM_DIR" && \ - mkdir -p "$NVM_DIR/src" && \ - 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) + 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.