2
2
# Source this file from your .bash-profile or script to use
3
3
4
4
# "Constants"
5
- _DNVM_BUILDNUMBER=" beta5-10359 "
5
+ _DNVM_BUILDNUMBER=" beta5-10360 "
6
6
_DNVM_AUTHORS=" Microsoft Open Technologies, Inc."
7
7
_DNVM_RUNTIME_PACKAGE_NAME=" dnx"
8
8
_DNVM_RUNTIME_FRIENDLY_NAME=" .NET Execution Environment"
@@ -54,6 +54,16 @@ if [ -z "$DNX_FEED" ]; then
54
54
DNX_FEED=" $_DNVM_DEFAULT_FEED "
55
55
fi
56
56
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
+
57
67
__dnvm_find_latest () {
58
68
local platform=" mono"
59
69
@@ -96,6 +106,14 @@ __dnvm_package_runtime() {
96
106
echo " $runtimeFullName " | sed " s/$_DNVM_RUNTIME_PACKAGE_NAME -\([^.-]*\).*/\1/"
97
107
}
98
108
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
+
99
117
__dnvm_update_self () {
100
118
local dnvmFileLocation=" $_DNVM_DNVM_DIR /dnvm.sh"
101
119
if [ ! -e $dnvmFileLocation ]; then
@@ -180,23 +198,33 @@ __dnvm_unpack() {
180
198
181
199
__dnvm_requested_version_or_alias () {
182
200
local versionOrAlias=" $1 "
201
+ local runtime=" $2 "
202
+ local arch=" $3 "
183
203
local runtimeBin=$( __dnvm_locate_runtime_bin_from_full_name " $versionOrAlias " )
184
204
185
205
# If the name specified is an existing package, just use it as is
186
206
if [ -n " $runtimeBin " ]; then
187
207
echo " $versionOrAlias "
188
208
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 "
194
212
else
195
213
local pkgVersion=$versionOrAlias
196
- local pkgPlatform=" mono"
197
- fi
198
214
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
200
228
fi
201
229
}
202
230
@@ -239,10 +267,12 @@ __dnvm_help() {
239
267
echo " "
240
268
echo " adds $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
241
269
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} "
243
271
echo " <semver>|<alias>|<package> add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
244
272
echo " none remove $_DNVM_RUNTIME_SHORT_NAME bin from path of current command line"
245
273
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)"
246
276
echo " "
247
277
printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME run <semver>|<alias> <args...> ${RCol} "
248
278
echo " <semver>|<alias> the version or alias to run"
@@ -363,18 +393,30 @@ dnvm()
363
393
;;
364
394
365
395
" use" |" run" |" exec" )
366
- [[ $1 == " use" && $# -gt 3 ]] && __dnvm_help && return
367
396
[[ $1 == " use" && $# -lt 2 ]] && __dnvm_help && return
397
+
368
398
local cmd=$1
369
399
local persistent=
400
+ local arch=
401
+ local runtime=
370
402
371
403
shift
372
404
if [ $cmd == " use" ]; then
405
+ local versionOrAlias=
373
406
while [ $# -ne 0 ]
374
407
do
375
408
if [[ $1 == " -p" || $1 == " -persistent" ]]; then
376
409
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
377
418
elif [[ -n $1 ]]; then
419
+ [[ -n $versionOrAlias ]] && echo " Invalid option $1 " && __dnvm_help && return 1
378
420
local versionOrAlias=$1
379
421
fi
380
422
shift
@@ -396,7 +438,7 @@ dnvm()
396
438
return 0
397
439
fi
398
440
399
- local runtimeFullName=$( __dnvm_requested_version_or_alias " $versionOrAlias " )
441
+ local runtimeFullName=$( __dnvm_requested_version_or_alias " $versionOrAlias " " $runtime " " $arch " )
400
442
local runtimeBin=$( __dnvm_locate_runtime_bin_from_full_name " $runtimeFullName " )
401
443
402
444
if [[ -z $runtimeBin ]]; then
@@ -441,7 +483,7 @@ dnvm()
441
483
442
484
if [[ $# == 1 ]]; then
443
485
echo " "
444
- local format=" %-20s %s\n"
486
+ local format=" %-25s %s\n"
445
487
printf " $format " " Alias" " Name"
446
488
printf " $format " " -----" " ----"
447
489
if [ -d " $_DNVM_ALIAS_DIR " ]; then
@@ -511,29 +553,29 @@ dnvm()
511
553
done
512
554
fi
513
555
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 " " ------" " -------" " -------" " ----" " ---- ----" " -----"
517
559
518
560
local formattedHome=` (echo $_DNVM_USER_PACKAGES | sed s=$HOME =~ =g)`
519
561
for f in $( find $_DNVM_USER_PACKAGES -name " $searchGlob " \( -type d -or -type l \) -prune -exec basename {} \; ) ; do
520
562
local active=" "
521
563
[[ $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 " )
523
566
local pkgVersion=$( __dnvm_package_version " $f " )
567
+ local pkgArch=$( __dnvm_package_arch " $f " )
524
568
525
569
local alias=" "
526
570
local delim=" "
527
571
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
531
573
alias+=" $delim ${i%/* } "
532
574
delim=" , "
533
575
fi
534
576
done
535
577
536
- printf " $formatString " " $active " " $pkgVersion " " $pkgName " " $formattedHome " " $alias "
578
+ printf " $formatString " " $active " " $pkgVersion " " $pkgRuntime " " $pkgArch " " $formattedHome " " $alias "
537
579
[[ $# == 2 ]] && echo " " && return 0
538
580
done
539
581
0 commit comments