22# Source this file from your .bash-profile or script to use
33
44# "Constants"
5- _DNVM_BUILDNUMBER=" beta5-10359 "
5+ _DNVM_BUILDNUMBER=" beta5-10360 "
66_DNVM_AUTHORS=" Microsoft Open Technologies, Inc."
77_DNVM_RUNTIME_PACKAGE_NAME=" dnx"
88_DNVM_RUNTIME_FRIENDLY_NAME=" .NET Execution Environment"
@@ -54,6 +54,16 @@ if [ -z "$DNX_FEED" ]; then
5454 DNX_FEED=" $_DNVM_DEFAULT_FEED "
5555fi
5656
57+ __dnvm_current_os ()
58+ {
59+ local uname=$( uname)
60+ if [[ $uname == " Darwin" ]]; then
61+ echo " darwin"
62+ else
63+ echo " linux"
64+ fi
65+ }
66+
5767__dnvm_find_latest () {
5868 local platform=" mono"
5969
@@ -96,6 +106,14 @@ __dnvm_package_runtime() {
96106 echo " $runtimeFullName " | sed " s/$_DNVM_RUNTIME_PACKAGE_NAME -\([^.-]*\).*/\1/"
97107}
98108
109+ __dnvm_package_arch () {
110+ local runtimeFullName=" $1 "
111+ if [[ " $runtimeFullName " =~ $_DNVM_RUNTIME_PACKAGE_NAME -[^-.]* -[^-.]* -[^-.]* \. .* ]];
112+ then
113+ echo " $runtimeFullName " | sed " s/$_DNVM_RUNTIME_PACKAGE_NAME -[^-.]*-[^-.]*-\([^-.]*\)\..*/\1/"
114+ fi
115+ }
116+
99117__dnvm_update_self () {
100118 local dnvmFileLocation=" $_DNVM_DNVM_DIR /dnvm.sh"
101119 if [ ! -e $dnvmFileLocation ]; then
@@ -180,23 +198,33 @@ __dnvm_unpack() {
180198
181199__dnvm_requested_version_or_alias () {
182200 local versionOrAlias=" $1 "
201+ local runtime=" $2 "
202+ local arch=" $3 "
183203 local runtimeBin=$( __dnvm_locate_runtime_bin_from_full_name " $versionOrAlias " )
184204
185205 # If the name specified is an existing package, just use it as is
186206 if [ -n " $runtimeBin " ]; then
187207 echo " $versionOrAlias "
188208 else
189- if [ -e " $_DNVM_ALIAS_DIR /$versionOrAlias .alias" ]; then
190- local runtimeFullName=$( cat " $_DNVM_ALIAS_DIR /$versionOrAlias .alias" )
191- local pkgName=$( echo $runtimeFullName | sed " s/\([^.]*\).*/\1/" )
192- local pkgVersion=$( echo $runtimeFullName | sed " s/[^.]*.\(.*\)/\1/" )
193- local pkgPlatform=$( echo " $pkgName " | sed " s/$_DNVM_RUNTIME_PACKAGE_NAME -\([^.-]*\).*/\1/" )
209+ if [ -e " $_DNVM_ALIAS_DIR /$versionOrAlias .alias" ]; then
210+ local runtimeFullName=$( cat " $_DNVM_ALIAS_DIR /$versionOrAlias .alias" )
211+ echo " $runtimeFullName "
194212 else
195213 local pkgVersion=$versionOrAlias
196- local pkgPlatform=" mono"
197- fi
198214
199- echo " $_DNVM_RUNTIME_PACKAGE_NAME -$pkgPlatform .$pkgVersion "
215+ if [[ -z $runtime || " $runtime " == " mono" ]]; then
216+ echo " $_DNVM_RUNTIME_PACKAGE_NAME -mono.$pkgVersion "
217+ elif [[ " $runtime " == " coreclr" ]]; then
218+ local pkgArchitecture=" x64"
219+ local pkgSystem=$( __dnvm_current_os)
220+
221+ if [ " $arch " != " " ]; then
222+ local pkgArchitecture=" $arch "
223+ fi
224+
225+ echo " $_DNVM_RUNTIME_PACKAGE_NAME -coreclr-$pkgSystem -$pkgArchitecture .$pkgVersion "
226+ fi
227+ fi
200228 fi
201229}
202230
@@ -239,10 +267,12 @@ __dnvm_help() {
239267 echo " "
240268 echo " adds $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
241269 echo " "
242- printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME use <semver>|<alias>|<package>|none [-p -persistent] ${RCol} "
270+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME use <semver>|<alias>|<package>|none [-p| -persistent] [-r|-runtime <runtime>] [-a|-arch <architecture> ] ${RCol} "
243271 echo " <semver>|<alias>|<package> add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
244272 echo " none remove $_DNVM_RUNTIME_SHORT_NAME bin from path of current command line"
245273 echo " -p|-persistent set selected version as default"
274+ echo " -r|-runtime runtime to use (mono, coreclr)"
275+ echo " -a|-arch architecture to use (x64)"
246276 echo " "
247277 printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME run <semver>|<alias> <args...> ${RCol} "
248278 echo " <semver>|<alias> the version or alias to run"
@@ -363,18 +393,30 @@ dnvm()
363393 ;;
364394
365395 " use" |" run" |" exec" )
366- [[ $1 == " use" && $# -gt 3 ]] && __dnvm_help && return
367396 [[ $1 == " use" && $# -lt 2 ]] && __dnvm_help && return
397+
368398 local cmd=$1
369399 local persistent=
400+ local arch=
401+ local runtime=
370402
371403 shift
372404 if [ $cmd == " use" ]; then
405+ local versionOrAlias=
373406 while [ $# -ne 0 ]
374407 do
375408 if [[ $1 == " -p" || $1 == " -persistent" ]]; then
376409 local persistent=" true"
410+ elif [[ $1 == " -a" || $1 == " -arch" ]]; then
411+ local arch=$2
412+ shift
413+ elif [[ $1 == " -r" || $1 == " -runtime" ]]; then
414+ local runtime=$2
415+ shift
416+ elif [[ $1 == -* ]]; then
417+ echo " Invalid option $1 " && __dnvm_help && return 1
377418 elif [[ -n $1 ]]; then
419+ [[ -n $versionOrAlias ]] && echo " Invalid option $1 " && __dnvm_help && return 1
378420 local versionOrAlias=$1
379421 fi
380422 shift
@@ -396,7 +438,7 @@ dnvm()
396438 return 0
397439 fi
398440
399- local runtimeFullName=$( __dnvm_requested_version_or_alias " $versionOrAlias " )
441+ local runtimeFullName=$( __dnvm_requested_version_or_alias " $versionOrAlias " " $runtime " " $arch " )
400442 local runtimeBin=$( __dnvm_locate_runtime_bin_from_full_name " $runtimeFullName " )
401443
402444 if [[ -z $runtimeBin ]]; then
@@ -441,7 +483,7 @@ dnvm()
441483
442484 if [[ $# == 1 ]]; then
443485 echo " "
444- local format=" %-20s %s\n"
486+ local format=" %-25s %s\n"
445487 printf " $format " " Alias" " Name"
446488 printf " $format " " -----" " ----"
447489 if [ -d " $_DNVM_ALIAS_DIR " ]; then
@@ -511,29 +553,29 @@ dnvm()
511553 done
512554 fi
513555
514- local formatString=" %-6s %-20s %-7s %-20s %s\n"
515- printf " $formatString " " Active" " Version" " Runtime" " Location" " Alias"
516- printf " $formatString " " ------" " -------" " -------" " --------" " -----"
556+ local formatString=" %-6s %-20s %-7s %-4s %- 20s %s\n"
557+ printf " $formatString " " Active" " Version" " Runtime" " Arch " " Location" " Alias"
558+ printf " $formatString " " ------" " -------" " -------" " ----" " ---- ----" " -----"
517559
518560 local formattedHome=` (echo $_DNVM_USER_PACKAGES | sed s=$HOME =~ =g)`
519561 for f in $( find $_DNVM_USER_PACKAGES -name " $searchGlob " \( -type d -or -type l \) -prune -exec basename {} \; ) ; do
520562 local active=" "
521563 [[ $PATH == * " $_DNVM_USER_PACKAGES /$f /bin" * ]] && local active=" *"
522- local pkgName=$( __dnvm_package_runtime " $f " )
564+ local pkgRuntime=$( __dnvm_package_runtime " $f " )
565+ local pkgName=$( __dnvm_package_name " $f " )
523566 local pkgVersion=$( __dnvm_package_version " $f " )
567+ local pkgArch=$( __dnvm_package_arch " $f " )
524568
525569 local alias=" "
526570 local delim=" "
527571 for i in " ${arr[@]} " ; do
528- temp=" $_DNVM_RUNTIME_PACKAGE_NAME -$pkgName .$pkgVersion "
529- temp2=" $_DNVM_RUNTIME_PACKAGE_NAME -$pkgName -x86.$pkgVersion "
530- if [[ ${i#*/ } == $temp || ${i#*/ } == $temp2 ]]; then
572+ if [[ ${i#*/ } == " $pkgName .$pkgVersion " ]]; then
531573 alias+=" $delim ${i%/* } "
532574 delim=" , "
533575 fi
534576 done
535577
536- printf " $formatString " " $active " " $pkgVersion " " $pkgName " " $formattedHome " " $alias "
578+ printf " $formatString " " $active " " $pkgVersion " " $pkgRuntime " " $pkgArch " " $formattedHome " " $alias "
537579 [[ $# == 2 ]] && echo " " && return 0
538580 done
539581
0 commit comments