Skip to content

Commit d6e3bf2

Browse files
author
Suhas Joshi
committed
Updated right kvm.sh and link in readme
1 parent 0dfa67a commit d6e3bf2

File tree

2 files changed

+60
-42
lines changed

2 files changed

+60
-42
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ To install KVM and the correct version of Mono on OS X using [Homebrew](http://b
5252

5353
* Install [Homebrew](http://brew.sh) if it is not already installed.
5454
* Run command `brew tap aspnet/k` to tap the ASP.NET vNext related git repositories. If you had already tapped the repo for previous releases, run `brew untap aspnet/k` to delete the old commands and tap again to get the updated brew scripts.
55-
* Run command `brew install kvm` to install KVM. This also automatically install the latest KRE package from https://www.myget.org/f/aspnetmaster/api/v2 feed.
55+
* Run command `brew install kvm` to install KVM. This also automatically install the latest KRE package from https://www.nuget.org/api/v2 feed.
5656
* Run command `source kvm.sh` on your terminal if your terminal cannot understand kvm.
5757

5858
#### Linux:

kvm.sh

Lines changed: 59 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,19 @@ if [ -z "$KRE_USER_HOME" ]; then
1414
fi
1515

1616
KRE_USER_PACKAGES="$KRE_USER_HOME/packages"
17-
KRE_MONO45=
18-
KRE_X86=
19-
KRE_X64=
2017
if [ -z "$KRE_FEED" ]; then
2118
KRE_FEED="https://www.myget.org/F/aspnetmaster/api/v2"
2219
fi
2320

2421
_kvm_find_latest() {
25-
local platform="mono45"
26-
local architecture="x86"
22+
local platform="Mono"
2723

2824
if ! _kvm_has "curl"; then
2925
echo 'KVM Needs curl to proceed.' >&2;
3026
return 1
3127
fi
3228

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"
3430
xml="$(curl $url 2>/dev/null)"
3531
echo $xml | grep \<[a-zA-Z]:Version\>* >> /dev/null || return 1
3632
version="$(echo $xml | sed 's/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/')"
@@ -61,7 +57,7 @@ _kvm_package_name() {
6157

6258
_kvm_package_runtime() {
6359
local kreFullName="$1"
64-
echo "$kreFullName" | sed "s/KRE-\([^-]*\).*/\1/"
60+
echo "$kreFullName" | sed "s/KRE-\([^.-]*\).*/\1/"
6561
}
6662

6763
_kvm_download() {
@@ -93,6 +89,7 @@ _kvm_download() {
9389
[[ $httpResult != "302" && $httpResult != "200" ]] && echo "HTTP Error $httpResult fetching $kreFullName from $KRE_FEED" && return 1
9490

9591
_kvm_unpack $kreFile $kreFolder
92+
return $?
9693
}
9794

9895
_kvm_unpack() {
@@ -119,38 +116,20 @@ _kvm_unpack() {
119116
-exec sh -c "head -c 11 {} | grep '/bin/bash' > /dev/null" \; -print | xargs chmod 775
120117
}
121118

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-
139119
_kvm_requested_version_or_alias() {
140120
local versionOrAlias="$1"
141121

142122
if [ -e "$KRE_USER_HOME/alias/$versionOrAlias.alias" ]; then
143123
local kreFullName=$(cat "$KRE_USER_HOME/alias/$versionOrAlias.alias")
144124
local pkgName=$(echo $kreFullName | sed "s/\([^.]*\).*/\1/")
145125
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/")
148127
else
149128
local pkgVersion=$versionOrAlias
150-
local pkgPlatform=$(_kvm_requested_platform "mono45")
151-
local pkgArchitecture=$(_kvm_requested_architecture "x86")
129+
local pkgPlatform="Mono"
152130
fi
153-
echo "KRE-$pkgPlatform-$pkgArchitecture.$pkgVersion"
131+
132+
echo "KRE-$pkgPlatform.$pkgVersion"
154133
}
155134

156135
# This will be more relevant if we support global installs
@@ -169,7 +148,7 @@ kvm()
169148
case $1 in
170149
"help" )
171150
echo ""
172-
echo "K Runtime Environment Version Manager - Build 10002"
151+
echo "K Runtime Environment Version Manager - Build 10017"
173152
echo ""
174153
echo "USAGE: kvm <command> [options]"
175154
echo ""
@@ -198,12 +177,14 @@ kvm()
198177
echo "list KRE aliases which have been defined"
199178
echo ""
200179
echo "kvm alias <alias>"
201-
echo "display value of named alias"
180+
echo "display value of the specified alias"
202181
echo ""
203182
echo "kvm alias <alias> <semver>"
204183
echo "<alias> The name of the alias to set"
205184
echo "<semver>|<alias> The KRE version to set the alias to. Alternatively use the version of the specified alias"
206185
echo ""
186+
echo "kvm unalias <alias>"
187+
echo "remove the specified alias"
207188
echo ""
208189
;;
209190

@@ -233,7 +214,7 @@ kvm()
233214
done
234215
if [[ "$versionOrAlias" == "latest" ]]; then
235216
echo "Determining latest version"
236-
versionOrAlias=$(_kvm_find_latest mono45 x86)
217+
versionOrAlias=$(_kvm_find_latest)
237218
[[ $? == 1 ]] && echo "Error: Could not find latest version from feed $KRE_FEED" && return 1
238219
echo "Latest version is $versionOrAlias"
239220
fi
@@ -249,14 +230,15 @@ kvm()
249230
mkdir "$kreFolder" > /dev/null 2>&1
250231
cp -a "$versionOrAlias" "$kreFile"
251232
_kvm_unpack "$kreFile" "$kreFolder"
233+
[[ $? == 1 ]] && return 1
252234
fi
253235
kvm use "$kreVersion" "$persistent"
254236
[[ -n $alias ]] && kvm alias "$alias" "$kreVersion"
255237
else
256238
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
257239
local kreFolder="$KRE_USER_PACKAGES/$kreFullName"
258240
_kvm_download "$kreFullName" "$kreFolder"
259-
[[ $? == 1 ]] && return
241+
[[ $? == 1 ]] && return 1
260242
kvm use "$versionOrAlias" "$persistent"
261243
[[ -n $alias ]] && kvm alias "$alias" "$versionOrAlias"
262244
fi
@@ -339,12 +321,23 @@ kvm()
339321

340322
local kreFullName=$(_kvm_requested_version_or_alias "$3")
341323

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
345325

326+
local action="Setting"
327+
[[ -e "$KRE_USER_HOME/alias/$name.alias" ]] && action="Updating"
328+
echo "$action alias '$name' to '$kreFullName'"
346329
echo "$kreFullName" > "$KRE_USER_HOME/alias/$name.alias"
347330
;;
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+
;;
348341

349342
"list" )
350343
[[ $# -gt 2 ]] && kvm help && return
@@ -357,15 +350,38 @@ kvm()
357350
local searchGlob=$(_kvm_requested_version_or_alias "$versionOrAlias")
358351
fi
359352
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)`
363367
for f in $(find $KRE_USER_PACKAGES/* -name "$searchGlob" -type d -prune -exec basename {} \;); do
364368
local active=""
365369
[[ $PATH == *"$KRE_USER_PACKAGES/$f/bin"* ]] && local active=" *"
366370
local pkgName=$(_kvm_package_runtime "$f")
367371
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"
369385
[[ $# == 2 ]] && echo "" && return 0
370386
done
371387

@@ -377,6 +393,8 @@ kvm()
377393
echo "Unknown command $1"
378394
return 1
379395
esac
396+
397+
return 0
380398
}
381399

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

Comments
 (0)