@@ -14,23 +14,19 @@ if [ -z "$KRE_USER_HOME" ]; then
14
14
fi
15
15
16
16
KRE_USER_PACKAGES=" $KRE_USER_HOME /packages"
17
- KRE_MONO45=
18
- KRE_X86=
19
- KRE_X64=
20
17
if [ -z " $KRE_FEED " ]; then
21
18
KRE_FEED=" https://www.myget.org/F/aspnetmaster/api/v2"
22
19
fi
23
20
24
21
_kvm_find_latest () {
25
- local platform=" mono45"
26
- local architecture=" x86"
22
+ local platform=" Mono"
27
23
28
24
if ! _kvm_has " curl" ; then
29
25
echo ' KVM Needs curl to proceed.' >&2 ;
30
26
return 1
31
27
fi
32
28
33
- local url=" $KRE_FEED /GetUpdates()?packageIds=%27KRE-$platform - $architecture %27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
29
+ local url=" $KRE_FEED /GetUpdates()?packageIds=%27KRE-$platform %27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
34
30
xml=" $( curl $url 2> /dev/null) "
35
31
echo $xml | grep \< [a-zA-Z]:Version\> * >> /dev/null || return 1
36
32
version=" $( echo $xml | sed ' s/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/' ) "
@@ -61,7 +57,7 @@ _kvm_package_name() {
61
57
62
58
_kvm_package_runtime () {
63
59
local kreFullName=" $1 "
64
- echo " $kreFullName " | sed " s/KRE-\([^-]*\).*/\1/"
60
+ echo " $kreFullName " | sed " s/KRE-\([^. -]*\).*/\1/"
65
61
}
66
62
67
63
_kvm_download () {
@@ -93,6 +89,7 @@ _kvm_download() {
93
89
[[ $httpResult != " 302" && $httpResult != " 200" ]] && echo " HTTP Error $httpResult fetching $kreFullName from $KRE_FEED " && return 1
94
90
95
91
_kvm_unpack $kreFile $kreFolder
92
+ return $?
96
93
}
97
94
98
95
_kvm_unpack () {
@@ -119,38 +116,20 @@ _kvm_unpack() {
119
116
-exec sh -c " head -c 11 {} | grep '/bin/bash' > /dev/null" \; -print | xargs chmod 775
120
117
}
121
118
122
- # This is not currently required. Placeholder for the case when we have multiple platforms (ie if we bundle mono)
123
- _kvm_requested_platform () {
124
- local default=$1
125
- [[ -z $KRE_MONO45 ]] && echo " mono45" && return
126
- echo $default
127
- }
128
-
129
- # This is not currently required. Placeholder for the case where we have multiple architectures (ie if we bundle mono)
130
- _kvm_requested_architecture () {
131
- local default=$1
132
-
133
- [[ -n $KRE_X86 && -n $KRE_X64 ]] && echo " This command cannot accept both -x86 and -x64" && return 1
134
- [[ -z $KRE_X86 ]] && echo " x86" && return
135
- [[ -z $KRE_X64 ]] && echo " x64" && return
136
- echo $default
137
- }
138
-
139
119
_kvm_requested_version_or_alias () {
140
120
local versionOrAlias=" $1 "
141
121
142
122
if [ -e " $KRE_USER_HOME /alias/$versionOrAlias .alias" ]; then
143
123
local kreFullName=$( cat " $KRE_USER_HOME /alias/$versionOrAlias .alias" )
144
124
local pkgName=$( echo $kreFullName | sed " s/\([^.]*\).*/\1/" )
145
125
local pkgVersion=$( echo $kreFullName | sed " s/[^.]*.\(.*\)/\1/" )
146
- local pkgPlatform=$( _kvm_requested_platform $( echo " $pkgName " | sed " s/KRE-\([^-]*\).*/\1/" ) )
147
- local pkgArchitecture=$( _kvm_requested_architecture $( echo " $pkgName " | sed " s/.*-.*-\([^-]*\).*/\1/" ) )
126
+ local pkgPlatform=$( echo " $pkgName " | sed " s/KRE-\([^.-]*\).*/\1/" )
148
127
else
149
128
local pkgVersion=$versionOrAlias
150
- local pkgPlatform=$( _kvm_requested_platform " mono45" )
151
- local pkgArchitecture=$( _kvm_requested_architecture " x86" )
129
+ local pkgPlatform=" Mono"
152
130
fi
153
- echo " KRE-$pkgPlatform -$pkgArchitecture .$pkgVersion "
131
+
132
+ echo " KRE-$pkgPlatform .$pkgVersion "
154
133
}
155
134
156
135
# This will be more relevant if we support global installs
@@ -169,7 +148,7 @@ kvm()
169
148
case $1 in
170
149
" help" )
171
150
echo " "
172
- echo " K Runtime Environment Version Manager - Build 10002 "
151
+ echo " K Runtime Environment Version Manager - Build 10017 "
173
152
echo " "
174
153
echo " USAGE: kvm <command> [options]"
175
154
echo " "
@@ -198,12 +177,14 @@ kvm()
198
177
echo " list KRE aliases which have been defined"
199
178
echo " "
200
179
echo " kvm alias <alias>"
201
- echo " display value of named alias"
180
+ echo " display value of the specified alias"
202
181
echo " "
203
182
echo " kvm alias <alias> <semver>"
204
183
echo " <alias> The name of the alias to set"
205
184
echo " <semver>|<alias> The KRE version to set the alias to. Alternatively use the version of the specified alias"
206
185
echo " "
186
+ echo " kvm unalias <alias>"
187
+ echo " remove the specified alias"
207
188
echo " "
208
189
;;
209
190
@@ -233,7 +214,7 @@ kvm()
233
214
done
234
215
if [[ " $versionOrAlias " == " latest" ]]; then
235
216
echo " Determining latest version"
236
- versionOrAlias=$( _kvm_find_latest mono45 x86 )
217
+ versionOrAlias=$( _kvm_find_latest)
237
218
[[ $? == 1 ]] && echo " Error: Could not find latest version from feed $KRE_FEED " && return 1
238
219
echo " Latest version is $versionOrAlias "
239
220
fi
@@ -249,14 +230,15 @@ kvm()
249
230
mkdir " $kreFolder " > /dev/null 2>&1
250
231
cp -a " $versionOrAlias " " $kreFile "
251
232
_kvm_unpack " $kreFile " " $kreFolder "
233
+ [[ $? == 1 ]] && return 1
252
234
fi
253
235
kvm use " $kreVersion " " $persistent "
254
236
[[ -n $alias ]] && kvm alias " $alias " " $kreVersion "
255
237
else
256
238
local kreFullName=" $( _kvm_requested_version_or_alias $versionOrAlias ) "
257
239
local kreFolder=" $KRE_USER_PACKAGES /$kreFullName "
258
240
_kvm_download " $kreFullName " " $kreFolder "
259
- [[ $? == 1 ]] && return
241
+ [[ $? == 1 ]] && return 1
260
242
kvm use " $versionOrAlias " " $persistent "
261
243
[[ -n $alias ]] && kvm alias " $alias " " $versionOrAlias "
262
244
fi
@@ -339,12 +321,23 @@ kvm()
339
321
340
322
local kreFullName=$( _kvm_requested_version_or_alias " $3 " )
341
323
342
- [[ ! -d " $KRE_USER_PACKAGES /$kreFullName " ]] && echo " $kreFullName is not an installed KRE version." && return 1
343
-
344
- echo " Setting alias '$name ' to '$kreFullName '"
324
+ [[ ! -d " $KRE_USER_PACKAGES /$kreFullName " ]] && echo " $kreFullName is not an installed KRE version" && return 1
345
325
326
+ local action=" Setting"
327
+ [[ -e " $KRE_USER_HOME /alias/$name .alias" ]] && action=" Updating"
328
+ echo " $action alias '$name ' to '$kreFullName '"
346
329
echo " $kreFullName " > " $KRE_USER_HOME /alias/$name .alias"
347
330
;;
331
+
332
+ " unalias" )
333
+ [[ $# -ne 2 ]] && kvm help && return
334
+
335
+ local name=$2
336
+ local aliasPath=" $KRE_USER_HOME /alias/$name .alias"
337
+ [[ ! -e " $aliasPath " ]] && echo " Cannot remove alias, '$name ' is not a valid alias name" && return 1
338
+ echo " Removing alias $name "
339
+ rm " $aliasPath " >> /dev/null 2>&1
340
+ ;;
348
341
349
342
" list" )
350
343
[[ $# -gt 2 ]] && kvm help && return
@@ -357,15 +350,38 @@ kvm()
357
350
local searchGlob=$( _kvm_requested_version_or_alias " $versionOrAlias " )
358
351
fi
359
352
echo " "
360
- local formatString=" %-6s %-20s %-7s %-12s %s\n"
361
- printf " $formatString " " Active" " Version" " Runtime" " Architecture" " Location"
362
- printf " $formatString " " ------" " -------" " -------" " ------------" " --------"
353
+
354
+ local arr=()
355
+ local i=0
356
+ local format=" %-20s %s\n"
357
+ for _kvm_file in $( find " $KRE_USER_HOME /alias" -name * .alias) ; do
358
+ arr[$i ]=" $( basename $_kvm_file | sed ' s/.alias//' ) /$( cat $_kvm_file ) "
359
+ let i+=1
360
+ done
361
+
362
+ local formatString=" %-6s %-20s %-7s %-20s %s\n"
363
+ printf " $formatString " " Active" " Version" " Runtime" " Location" " Alias"
364
+ printf " $formatString " " ------" " -------" " -------" " --------" " -----"
365
+
366
+ local formattedHome=` (echo $KRE_USER_PACKAGES | sed s=$HOME =~ =g)`
363
367
for f in $( find $KRE_USER_PACKAGES /* -name " $searchGlob " -type d -prune -exec basename {} \; ) ; do
364
368
local active=" "
365
369
[[ $PATH == * " $KRE_USER_PACKAGES /$f /bin" * ]] && local active=" *"
366
370
local pkgName=$( _kvm_package_runtime " $f " )
367
371
local pkgVersion=$( _kvm_package_version " $f " )
368
- printf " $formatString " " $active " " $pkgVersion " " $pkgName " " x86" " $KRE_USER_PACKAGES "
372
+
373
+ local alias=" "
374
+ local delim=" "
375
+ for i in " ${arr[@]} " ; do
376
+ temp=" KRE-$pkgName .$pkgVersion "
377
+ temp2=" KRE-$pkgName -x86.$pkgVersion "
378
+ if [[ ${i#*/ } == $temp || ${i#*/ } == $temp2 ]]; then
379
+ alias+=" $delim ${i%/* } "
380
+ delim=" , "
381
+ fi
382
+ done
383
+
384
+ printf " $formatString " " $active " " $pkgVersion " " $pkgName " " $formattedHome " " $alias "
369
385
[[ $# == 2 ]] && echo " " && return 0
370
386
done
371
387
@@ -377,6 +393,8 @@ kvm()
377
393
echo " Unknown command $1 "
378
394
return 1
379
395
esac
396
+
397
+ return 0
380
398
}
381
399
382
- kvm list default > /dev/null && kvm use default > /dev/null || true
400
+ kvm list default > /dev/null && kvm use default > /dev/null || true
0 commit comments