22# Source this file from your .bash-profile or script to use
33
44# "Constants"
5- _DNVM_BUILDNUMBER=" beta8-15518 "
5+ _DNVM_BUILDNUMBER=" beta8-15519 "
66_DNVM_AUTHORS=" Microsoft Open Technologies, Inc."
77_DNVM_RUNTIME_PACKAGE_NAME=" dnx"
88_DNVM_RUNTIME_FRIENDLY_NAME=" .NET Execution Environment"
@@ -220,10 +220,11 @@ __dnvm_update_self() {
220220
221221__dnvm_promptSudo () {
222222 local acceptSudo=" $1 "
223+ local sudoMsg=" $2 "
223224
224225 local answer=
225226 if [ " $acceptSudo " == " 0" ]; then
226- echo " In order to install dnx globally, dnvm will have to temporarily run as root. "
227+ echo $2
227228 read -p " You may be prompted for your password via 'sudo' during this process. Is this Ok? (y/N) " answer
228229 else
229230 answer=" y"
@@ -264,7 +265,7 @@ __dnvm_download() {
264265 local useSudo=
265266 mkdir -p " $runtimeFolder " > /dev/null 2>&1
266267 if [ ! -d $runtimeFolder ]; then
267- if ! __dnvm_promptSudo $acceptSudo ; then
268+ if ! __dnvm_promptSudo $acceptSudo " In order to install dnx globally, dnvm will have to temporarily run as root. " ; then
268269 useSudo=sudo
269270 sudo mkdir -p " $runtimeFolder " > /dev/null 2>&1 || return 1
270271 else
@@ -439,6 +440,13 @@ __dnvm_help() {
439440 echo " "
440441 echo " adds $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
441442 echo " "
443+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME uninstall <semver> [-r|-runtime <runtime>] [-a|-arch <architecture>] [-OS <OS>]${RCol} "
444+ echo " <semver> the version to uninstall"
445+ echo " -r|-runtime runtime to use (mono, coreclr)"
446+ echo " -a|-arch architecture to use (x64)"
447+ echo " -OS the operating system that the runtime targets (default:$( __dnvm_current_os) "
448+ echo " -y Assume Yes to all queries and do not prompt"
449+ echo " "
442450 printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME use <semver>|<alias>|<package>|none [-p|-persistent] [-r|-runtime <runtime>] [-a|-arch <architecture>] ${RCol} "
443451 echo " <semver>|<alias>|<package> add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
444452 echo " none remove $_DNVM_RUNTIME_SHORT_NAME bin from path of current command line"
@@ -660,7 +668,7 @@ dnvm()
660668 local useSudo=
661669 mkdir -p " $runtimeFolder " > /dev/null 2>&1
662670 if [ ! -d $runtimeFolder ]; then
663- if ! __dnvm_promptSudo $acceptSudo ; then
671+ if ! __dnvm_promptSudo $acceptSudo " In order to install dnx globally, dnvm will have to temporarily run as root. " ; then
664672 useSudo=sudo
665673 sudo mkdir -p " $runtimeFolder " > /dev/null 2>&1 || return 1
666674 else
@@ -676,6 +684,79 @@ dnvm()
676684 fi
677685 ;;
678686
687+ " uninstall" )
688+ [[ $# -lt 2 ]] && __dnvm_help && return
689+ shift
690+
691+ local versionOrAlias=
692+ local runtime=
693+ local architecture=
694+ local os=
695+ local acceptSudo=0
696+ while [ $# -ne 0 ]
697+ do
698+ if [[ $1 == " -r" || $1 == " -runtime" ]]; then
699+ local runtime=$2
700+ shift
701+ elif [[ $1 == " -a" || $1 == " -arch" ]]; then
702+ local architecture=$2
703+ shift
704+ elif [[ $1 == " -OS" ]]; then
705+ local os=$2
706+ shift
707+ elif [[ $1 == " -y" ]]; then
708+ local acceptSudo=1
709+ elif [[ -n $1 ]]; then
710+ local versionOrAlias=$1
711+ fi
712+
713+ shift
714+ done
715+
716+ if [[ -z $os ]]; then
717+ os=$( __dnvm_current_os)
718+ elif [[ $os == " osx" ]]; then
719+ os=" darwin"
720+ fi
721+
722+ if [[ -z $runtime ]]; then
723+ runtime=$( __dnvm_os_runtime_defaults " $os " )
724+ fi
725+
726+ if [[ -z $architecture ]]; then
727+ architecture=$( __dnvm_runtime_bitness_defaults " $runtime " )
728+ fi
729+
730+ # dnx-coreclr-linux-x64.1.0.0-beta7-12290
731+ local runtimeFullName=$( __dnvm_requested_version_or_alias " $versionOrAlias " " $runtime " " $architecture " " $os " )
732+
733+ for folder in ` echo $DNX_HOME | tr " :" " \n" ` ; do
734+ if [ -e " $folder /runtimes/$runtimeFullName " ]; then
735+ local runtimeFolder=" $folder /runtimes/$runtimeFullName "
736+ fi
737+ done
738+
739+ if [[ -e $runtimeFolder ]]; then
740+ if [[ $runtimeFolder == * " $DNX_GLOBAL_HOME " * ]] ; then
741+ if ! __dnvm_promptSudo $acceptSudo " In order to uninstall a global dnx, dnvm will have to temporarily run as root." ; then
742+ local useSudo=sudo
743+ fi
744+ fi
745+ $useSudo rm -r $runtimeFolder
746+ echo " Removed $runtimeFolder "
747+ else
748+ echo " $runtimeFolder is not installed"
749+ fi
750+
751+ if [ -d " $_DNVM_ALIAS_DIR " ]; then
752+ for __dnvm_file in $( find " $_DNVM_ALIAS_DIR " -name * .alias) ; do
753+ if [ $( cat $__dnvm_file ) == " $runtimeFullName " ]; then
754+ rm $__dnvm_file
755+ fi
756+ done
757+ fi
758+ ;;
759+
679760 " use" |" run" |" exec" )
680761 [[ $1 == " use" && $# -lt 2 ]] && __dnvm_help && return
681762
@@ -871,7 +952,6 @@ dnvm()
871952
872953 # Z shell array-index starts at one.
873954 local i=1
874- local format=" %-20s %s\n"
875955 if [ -d " $_DNVM_ALIAS_DIR " ]; then
876956 for __dnvm_file in $( find " $_DNVM_ALIAS_DIR " -name * .alias) ; do
877957 if [ ! -d " $_DNVM_USER_PACKAGES /$( cat $__dnvm_file ) " ] && [ ! -d " $_DNVM_GLOBAL_PACKAGES /$( cat $__dnvm_file ) " ]; then
0 commit comments