Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Fowler <davidfowl@gmail.com>2014-07-06 05:38:44 +0400
committerDavid Fowler <davidfowl@gmail.com>2014-07-06 05:38:44 +0400
commitd970cec8bc1c23092ffe7ada2e3737f8297b78ad (patch)
treea6a324ca056b139a7917a5b649cf7a477f59dada
parent9b763815c21856659950f3e8ccab78d8bc955bba (diff)
Updated kvm to the latest versionsv1.0.0-alpha2
-rw-r--r--kvm.ps1128
-rw-r--r--kvm.sh167
2 files changed, 186 insertions, 109 deletions
diff --git a/kvm.ps1 b/kvm.ps1
index cbf8b9bbcf..834879a35a 100644
--- a/kvm.ps1
+++ b/kvm.ps1
@@ -10,6 +10,8 @@ param(
[switch] $x64 = $false,
[switch] $svr50 = $false,
[switch] $svrc50 = $false,
+ [alias("a")]
+ [string] $alias = $null,
[parameter(Position=1, ValueFromRemainingArguments=$true)]
[string[]]$args=@()
)
@@ -18,12 +20,18 @@ $userKrePath = $env:USERPROFILE + "\.kre"
$userKrePackages = $userKrePath + "\packages"
$globalKrePath = $env:ProgramFiles + "\KRE"
$globalKrePackages = $globalKrePath + "\packages"
+$feed = $env:KRE_NUGET_API_URL
+
+if (!$feed)
+{
+ $feed = "https://www.myget.org/F/aspnetvnext/api/v2";
+}
$scriptPath = $myInvocation.MyCommand.Definition
function Kvm-Help {
@"
-K Runtime Environment Version Manager - Build 538
+K Runtime Environment Version Manager - Build 10002
USAGE: kvm <command> [options]
@@ -35,20 +43,24 @@ kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>]
-f|-force upgrade even if latest is already installed
-proxy <ADDRESS> use given address as proxy when accessing remote server
-kvm install <semver>|<alias>|<nupkg> [-x86][-x64] [-svr50][-svrc50] [-g|-global]
- install requested KRE from feed
+kvm install <semver>|<alias>|<nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-alias <alias>] [-g|-global] [-f|-force]
+ <semver>|<alias> install requested KRE from feed
+ <nupkg> install requested KRE from package on local filesystem
+ latest install latest KRE from feed
add KRE bin to path of current command line
+ -p|-persistent add KRE bin to PATH environment variables persistently
+ -a|-alias <alias> set alias <alias> for requested KRE on install
-g|-global install to machine-wide location
-f|-force install even if specified version is already installed
kvm use <semver>|<alias>|none [-x86][-x64] [-svr50][-svrc50] [-p|-persistent] [-g|-global]
- <semver>|<alias> add KRE bin to path of current command line
+ <semver>|<alias> add KRE bin to path of current command line
none remove KRE bin from path of current command line
-p|-persistent add KRE bin to PATH environment variables persistently
-g|-global combined with -p to change machine PATH instead of user PATH
kvm list
- list KRE versions installed
+ list KRE versions installed
kvm alias
list KRE aliases which have been defined
@@ -56,8 +68,9 @@ kvm alias
kvm alias <alias>
display value of named alias
-kvm alias <alias> <semver> [-x86][-x64] [-svr50][-svrc50]
- set alias to specific version
+kvm alias <alias> <semver>|<alias> [-x86][-x64] [-svr50][-svrc50]
+ <alias> The name of the alias to set
+ <semver>|<alias> The KRE version to set the alias to. Alternatively use the version of the specified alias
"@ | Write-Host
}
@@ -109,21 +122,19 @@ function Kvm-Global-Setup {
function Kvm-Global-Upgrade {
$persistent = $true
+ $alias="default"
If (Needs-Elevation) {
$arguments = "& '$scriptPath' upgrade -global $(Requested-Switches)"
Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
break
}
- $version = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
- Kvm-Global-Install $version
- Kvm-Alias-Set "default" $version
+ Kvm-Global-Install "latest"
}
function Kvm-Upgrade {
$persistent = $true
- $version = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
- Kvm-Install $version
- Kvm-Alias-Set "default" $version
+ $alias="default"
+ Kvm-Install "latest"
}
function Add-Proxy-If-Specified {
@@ -152,22 +163,18 @@ param(
)
Write-Host "Determining latest version"
- $url = "https://www.myget.org/F/aspnetvnext/api/v2/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
+ $url = "$feed/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
$wc = New-Object System.Net.WebClient
$wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
Add-Proxy-If-Specified($wc)
[xml]$xml = $wc.DownloadString($url)
- $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml
+ $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml
return $version
}
-function Kvm-Install-Latest {
- Kvm-Install (Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86"))
-}
-
function Do-Kvm-Download {
param(
[string] $kreFullName,
@@ -175,7 +182,7 @@ param(
)
$parts = $kreFullName.Split(".", 2)
- $url = "https://www.myget.org/F/aspnetvnext/api/v2/package/" + $parts[0] + "/" + $parts[1]
+ $url = "$feed/package/" + $parts[0] + "/" + $parts[1]
$kreFolder = Join-Path $packagesFolder $kreFullName
$kreFile = Join-Path $kreFolder "$kreFullName.nupkg"
@@ -189,13 +196,13 @@ param(
}
}
- Write-Host "Downloading" $kreFullName "from https://www.myget.org/F/aspnetvnext/api/v2/"
+ Write-Host "Downloading" $kreFullName "from $feed"
#Downloading to temp location
$kreTempDownload = Join-Path $packagesFolder "temp"
$tempKreFile = Join-Path $kreTempDownload "$kreFullName.nupkg"
- if(Test-Path $kreTempDownload) {
+ if(Test-Path $kreTempDownload) {
del "$kreTempDownload\*" -recurse
} else {
md $kreTempDownload -Force | Out-Null
@@ -208,7 +215,7 @@ param(
Do-Kvm-Unpack $tempKreFile $kreTempDownload
- md $kreFolder -Force | Out-Null
+ md $kreFolder -Force | Out-Null
Write-Host "Installing to $kreFolder"
mv "$kreTempDownload\*" $kreFolder
}
@@ -233,7 +240,7 @@ param(
#make it a nupkg again
Rename-Item $kreZip $kreFile
}
-
+
If (Test-Path ($kreFolder + "\[Content_Types].xml")) {
Remove-Item ($kreFolder + "\[Content_Types].xml")
}
@@ -256,10 +263,17 @@ param(
break
}
+ if ($versionOrAlias -eq "latest") {
+ $versionOrAlias = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
+ }
+
$kreFullName = Requested-VersionOrAlias $versionOrAlias
Do-Kvm-Download $kreFullName $globalKrePackages
Kvm-Use $versionOrAlias
+ if (![string]::IsNullOrWhiteSpace($alias)) {
+ Kvm-Alias-Set $alias $versionOrAlias
+ }
}
function Kvm-Install {
@@ -276,36 +290,44 @@ param(
del $kreFolder -Recurse -Force
$folderExists = $false;
}
-
+
if($folderExists) {
Write-Host "Target folder '$kreFolder' already exists"
} else {
$tempUnpackFolder = Join-Path $userKrePackages "temp"
$tempKreFile = Join-Path $tempUnpackFolder "$kreFullName.nupkg"
-
- if(Test-Path $tempUnpackFolder) {
+
+ if(Test-Path $tempUnpackFolder) {
del "$tempUnpackFolder\*" -recurse
} else {
md $tempUnpackFolder -Force | Out-Null
}
copy $versionOrAlias $tempKreFile
-
+
Do-Kvm-Unpack $tempKreFile $tempUnpackFolder
md $kreFolder -Force | Out-Null
Write-Host "Installing to $kreFolder"
mv "$tempUnpackFolder\*" $kreFolder
}
- $kreBin = "$kreFolder\bin"
- Write-Host "Adding" $kreBin "to process PATH"
- Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
- }
- else
- {
- $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ $packageVersion = Package-Version $kreFullName
+ Kvm-Use $packageVersion
+ if (![string]::IsNullOrWhiteSpace($alias)) {
+ Kvm-Alias-Set $alias $packageVersion
+ }
+ }
+ else
+ {
+ if ($versionOrAlias -eq "latest") {
+ $versionOrAlias = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
+ }
+ $kreFullName = Requested-VersionOrAlias $versionOrAlias
Do-Kvm-Download $kreFullName $userKrePackages
Kvm-Use $versionOrAlias
+ if (![string]::IsNullOrWhiteSpace($alias)) {
+ Kvm-Alias-Set $alias $versionOrAlias
+ }
}
}
@@ -325,7 +347,7 @@ function Kvm-List {
}
filter List-Parts {
- $hasBin = Test-Path($_.FullName+"\bin")
+ $hasBin = Test-Path($_.FullName+"\bin")
if (!$hasBin) {
return
}
@@ -363,7 +385,7 @@ param(
Write-Host "Removing KRE from process PATH"
Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
- if ($persistent) {
+ if ($persistent) {
Write-Host "Removing KRE from machine PATH"
$machinePath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
$machinePath = Change-Path $machinePath "" ($globalKrePackages, $userKrePackages)
@@ -378,7 +400,7 @@ param(
if ($kreBin -eq $null) {
Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
return
- }
+ }
Write-Host "Adding" $kreBin "to process PATH"
Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
@@ -399,7 +421,7 @@ param(
Write-Host "Removing KRE from process PATH"
Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
- if ($persistent) {
+ if ($persistent) {
Write-Host "Removing KRE from user PATH"
$userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
$userPath = Change-Path $userPath "" ($globalKrePackages, $userKrePackages)
@@ -414,12 +436,12 @@ param(
if ($kreBin -eq $null) {
Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
return
- }
+ }
Write-Host "Adding" $kreBin "to process PATH"
Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
- if ($persistent) {
+ if ($persistent) {
Write-Host "Adding $kreBin to user PATH"
$userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
$userPath = Change-Path $userPath $kreBin ($globalKrePackages, $userKrePackages)
@@ -438,7 +460,12 @@ param(
[string] $name
)
md ($userKrePath + "\alias\") -Force | Out-Null
- Write-Host "Alias '$name' is set to" (Get-Content ($userKrePath + "\alias\" + $name + ".txt"))
+ $aliasFilePath=$userKrePath + "\alias\" + $name + ".txt"
+ if (!(Test-Path $aliasFilePath)) {
+ Write-Host "Alias '$name' does not exist"
+ } else {
+ Write-Host "Alias '$name' is set to" (Get-Content ($userKrePath + "\alias\" + $name + ".txt"))
+ }
}
function Kvm-Alias-Set {
@@ -446,7 +473,7 @@ param(
[string] $name,
[string] $value
)
- $kreFullName = "KRE-" + (Requested-Platform "svr50") + "-" + (Requested-Architecture "x86") + "." + $value
+ $kreFullName = Requested-VersionOrAlias $value
Write-Host "Setting alias '$name' to '$kreFullName'"
md ($userKrePath + "\alias\") -Force | Out-Null
@@ -471,6 +498,13 @@ param(
return $null
}
+function Package-Version() {
+param(
+ [string] $kreFullName
+)
+ return $kreFullName -replace '[^.]*.(.*)', '$1'
+}
+
function Requested-VersionOrAlias() {
param(
[string] $versionOrAlias
@@ -496,7 +530,7 @@ param(
)
if ($svr50 -and $svrc50) {
Throw "This command cannot accept both -svr50 and -svrc50"
- }
+ }
if ($svr50) {
return "svr50"
}
@@ -512,7 +546,7 @@ param(
)
if ($x86 -and $x64) {
Throw "This command cannot accept both -x86 and -x64"
- }
+ }
if ($x86) {
return "x86"
}
@@ -534,7 +568,7 @@ param(
foreach($removePath in $removePaths) {
if ($portion.StartsWith($removePath)) {
$skip = $true
- }
+ }
}
if (!$skip) {
$newPath = $newPath + ";" + $portion
@@ -574,7 +608,6 @@ function Requested-Switches() {
switch -wildcard ($command + " " + $args.Count) {
"setup 0" {Kvm-Global-Setup}
"upgrade 0" {Kvm-Global-Upgrade}
-# "install 0" {Kvm-Global-Install-Latest}
"install 1" {Kvm-Global-Install $args[0]}
# "list 0" {Kvm-Global-List}
"use 1" {Kvm-Global-Use $args[0]}
@@ -584,7 +617,6 @@ function Requested-Switches() {
switch -wildcard ($command + " " + $args.Count) {
"setup 0" {Kvm-Global-Setup}
"upgrade 0" {Kvm-Upgrade}
-# "install 0" {Kvm-Install-Latest}
"install 1" {Kvm-Install $args[0]}
"list 0" {Kvm-List}
"use 1" {Kvm-Use $args[0]}
diff --git a/kvm.sh b/kvm.sh
index 7a252d2944..c9a91055b5 100644
--- a/kvm.sh
+++ b/kvm.sh
@@ -17,7 +17,9 @@ KRE_USER_PACKAGES="$KRE_USER_HOME/packages"
KRE_MONO45=
KRE_X86=
KRE_X64=
-KRE_NUGET_API_URL="https://www.myget.org/F/aspnetvnext/api/v2"
+if [ -z "$KRE_FEED" ]; then
+ KRE_FEED="https://www.myget.org/F/aspnetvnext/api/v2"
+fi
_kvm_find_latest() {
local platform="mono45"
@@ -28,11 +30,10 @@ _kvm_find_latest() {
return 1
fi
- local url="$KRE_NUGET_API_URL/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
- local cmd=
- local xml="$(curl $url 2>/dev/null)"
+ local url="$KRE_FEED/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
+ xml="$(curl $url 2>/dev/null)"
+ echo $xml | grep \<[a-zA-Z]:Version\>* >> /dev/null || return 1
version="$(echo $xml | sed 's/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/')"
- [[ $xml == $version ]] && return 1
echo $version
}
@@ -48,13 +49,28 @@ _kvm_prepend_path() {
fi
}
+_kvm_package_version() {
+ local kreFullName="$1"
+ echo "$kreFullName" | sed "s/[^.]*.\(.*\)/\1/"
+}
+
+_kvm_package_name() {
+ local kreFullName="$1"
+ echo "$kreFullName" | sed "s/\([^.]*\).*/\1/"
+}
+
+_kvm_package_runtime() {
+ local kreFullName="$1"
+ echo "$kreFullName" | sed "s/KRE-\([^-]*\).*/\1/"
+}
+
_kvm_download() {
local kreFullName="$1"
local kreFolder="$2"
- local pkgName=$(echo "$kreFullName" | sed "s/\([^.]*\).*/\1/")
- local pkgVersion=$(echo "$kreFullName" | sed "s/[^.]*.\(.*\)/\1/")
- local url="$KRE_NUGET_API_URL/package/$pkgName/$pkgVersion"
+ local pkgName=$(_kvm_package_name "$kreFullName")
+ local pkgVersion=$(_kvm_package_version "$kreFullName")
+ local url="$KRE_FEED/package/$pkgName/$pkgVersion"
local kreFile="$kreFolder/$kreFullName.nupkg"
if [ -e "$kreFolder" ]; then
@@ -62,7 +78,7 @@ _kvm_download() {
return 0
fi
- echo "Downloading $kreFullName from $KRE_NUGET_API_URL"
+ echo "Downloading $kreFullName from $KRE_FEED"
if ! _kvm_has "curl"; then
echo "KVM Needs curl to proceed." >&2;
@@ -73,8 +89,8 @@ _kvm_download() {
local httpResult=$(curl -L -D - -u aspnetreadonly:4d8a2d9c-7b80-4162-9978-47e918c9658c "$url" -o "$kreFile" 2>/dev/null | grep "^HTTP/1.1" | head -n 1 | sed "s/HTTP.1.1 \([0-9]*\).*/\1/")
- [[ $httpResult == "404" ]] && echo "$kreFullName was not found in repository $KRE_NUGET_API_URL" && return 1
- [[ $httpResult != "302" ]] && echo "Http Error $httpResult fetching $kreFullName from $KRE_NUGET_API_URL" && return 1
+ [[ $httpResult == "404" ]] && echo "$kreFullName was not found in repository $KRE_FEED" && return 1
+ [[ $httpResult != "302" && $httpResult != "200" ]] && echo "HTTP Error $httpResult fetching $kreFullName from $KRE_FEED" && return 1
_kvm_unpack $kreFile $kreFolder
}
@@ -153,23 +169,27 @@ kvm()
case $1 in
"help" )
echo ""
- echo "K Runtime Environment Version Manager - Build {{BUILD_NUMBER}}"
+ echo "K Runtime Environment Version Manager - Build 10002"
echo ""
echo "USAGE: kvm <command> [options]"
echo ""
echo "kvm upgrade"
echo "install latest KRE from feed"
- echo "set 'default' alias to installed version"
- echo "add KRE bin to user PATH environment variable persistently"
+ echo "add KRE bin to path of current command line"
+ echo "set installed version as default"
echo ""
- echo "kvm install <semver>|<alias>|<nupkg>"
- echo "install requested KRE from feed"
+ echo "kvm install <semver>|<alias>|<nupkg>|latest [-a|-alias <alias>] [-p -persistent]"
+ echo "<semver>|<alias> install requested KRE from feed"
+ echo "<nupkg> install requested KRE from local package on filesystem"
+ echo "latest install latest version of KRE from feed"
+ echo "-a|-alias <alias> set alias <alias> for requested KRE on install"
+ echo "-p -persistent set installed version as default"
echo "add KRE bin to path of current command line"
echo ""
echo "kvm use <semver>|<alias>|none [-p -persistent]"
echo "<semver>|<alias> add KRE bin to path of current command line "
echo "none remove KRE bin from path of current command line"
- echo "-p -persistent set selected version as default"
+ echo "-p -persistent set selected version as default"
echo ""
echo "kvm list"
echo "list KRE versions installed "
@@ -181,46 +201,64 @@ kvm()
echo "display value of named alias"
echo ""
echo "kvm alias <alias> <semver>"
- echo "set alias to specific version"
+ echo "<alias> The name of the alias to set"
+ echo "<semver>|<alias> The KRE version to set the alias to. Alternatively use the version of the specified alias"
echo ""
echo ""
;;
"upgrade" )
[ $# -ne 1 ] && kvm help && return
- echo "Determining latest version"
- local version=$(_kvm_find_latest mono45 x86)
- echo $version
- kvm install $version
- kvm alias default $version
+ kvm install latest -p
;;
"install" )
- [ $# -ne 2 ] && kvm help && return
-
- local versionOrAlias="$2"
-
- if [ "$versionOrAlias" == *.nupkg ]; then
- local kreFullName=$(echo $versionOrAlias | sed "s/\(.*\)\.nupkg/\1/")
+ [ $# -lt 2 ] && kvm help && return
+ shift
+ local persistant=
+ local versionOrAlias=
+ local alias=
+ while [ $# -ne 0 ]
+ do
+ if [[ $1 == "-p" || $1 == "-persistant" ]]; then
+ local persistent="-p"
+ elif [[ $1 == "-a" || $1 == "-alias" ]]; then
+ local alias=$2
+ shift
+ elif [[ -n $1 ]]; then
+ [[ -n $versionOrAlias ]] && echo "Invalid option $1" && kvm help && return 1
+ local versionOrAlias=$1
+ fi
+ shift
+ done
+ if [[ "$versionOrAlias" == "latest" ]]; then
+ echo "Determining latest version"
+ versionOrAlias=$(_kvm_find_latest mono45 x86)
+ [[ $? == 1 ]] && echo "Error: Could not find latest version from feed $KRE_FEED" && return 1
+ echo "Latest version is $versionOrAlias"
+ fi
+ if [[ "$versionOrAlias" == *.nupkg ]]; then
+ local kreFullName=$(basename $versionOrAlias | sed "s/\(.*\)\.nupkg/\1/")
+ local kreVersion=$(_kvm_package_version "$kreFullName")
local kreFolder="$KRE_USER_PACKAGES/$kreFullName"
local kreFile="$kreFolder/$kreFullName.nupkg"
if [ -e "$kreFolder" ]; then
- echo "Target folder '$kreFolder' already exists"
+ echo "$kreFullName already installed"
else
mkdir "$kreFolder" > /dev/null 2>&1
cp -a "$versionOrAlias" "$kreFile"
_kvm_unpack "$kreFile" "$kreFolder"
fi
-
- echo "Adding $kreBin to current PATH"
- PATH=$(_kvm_strip_path "$PATH" "/bin")
- PATH=(_kvm_prepend_path "$PATH" "$kreBin")
+ kvm use "$kreVersion" "$persistent"
+ [[ -n $alias ]] && kvm alias "$alias" "$kreVersion"
else
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
local kreFolder="$KRE_USER_PACKAGES/$kreFullName"
_kvm_download "$kreFullName" "$kreFolder"
- kvm use "$versionOrAlias"
+ [[ $? == 1 ]] && return
+ kvm use "$versionOrAlias" "$persistent"
+ [[ -n $alias ]] && kvm alias "$alias" "$versionOrAlias"
fi
;;
@@ -229,13 +267,12 @@ kvm()
[ $# -lt 2 ] && kvm help && return
shift
- local persistant=
-
+ local persistent=
while [ $# -ne 0 ]
do
- if [[ $1 == "-p" || $1 == "-persistant" ]]; then
- local persistant="true"
- else
+ if [[ $1 == "-p" || $1 == "-persistent" ]]; then
+ local persistent="true"
+ elif [[ -n $1 ]]; then
local versionOrAlias=$1
fi
shift
@@ -244,7 +281,7 @@ kvm()
if [[ $versionOrAlias == "none" ]]; then
echo "Removing KRE from process PATH"
# Strip other version from PATH
- PATH=`_kvm_strip_path "$PATH" "/bin"`
+ PATH=$(_kvm_strip_path "$PATH" "/bin")
if [[ -n $persistent && -e "$KRE_USER_HOME/alias/default.alias" ]]; then
echo "Setting default KRE to none"
@@ -263,20 +300,30 @@ kvm()
echo "Adding" $kreBin "to process PATH"
- PATH=`_kvm_strip_path "$PATH" "/bin"`
- PATH=`_kvm_prepend_path "$PATH" "$kreBin"`
+ PATH=$(_kvm_strip_path "$PATH" "/bin")
+ PATH=$(_kvm_prepend_path "$PATH" "$kreBin")
if [[ -n $persistent ]]; then
- echo "Setting $kreBin as default KRE"
- kvm alias default "$versionOrAlias"
+ local kreVersion=$(_kvm_package_version "$kreFullName")
+ kvm alias default "$kreVersion"
fi
;;
"alias" )
[[ $# -gt 3 ]] && kvm help && return
+ [[ ! -e "$KRE_USER_HOME/alias/" ]] && mkdir "$KRE_USER_HOME/alias/" > /dev/null
+
if [[ $# == 1 ]]; then
- for f in $(find "$KRE_USER_HOME/alias" -name *.alias); do printf "%-20s %s\n" "$(basename $f | sed 's/.alias//')" "$(cat $f)"; done
+ echo ""
+ local format="%-20s %s\n"
+ printf "$format" "Alias" "Name"
+ printf "$format" "-----" "----"
+ for _kvm_file in $(find "$KRE_USER_HOME/alias" -name *.alias); do
+ local alias="$(basename $_kvm_file | sed 's/.alias//')"
+ local name="$(cat $_kvm_file)"
+ printf "$format" "$alias" "$name"
+ done
echo ""
return
fi
@@ -290,13 +337,11 @@ kvm()
return
fi
- local semver="$3"
- local kreFullName="KRE-$(_kvm_requested_platform mono45)-$(_kvm_requested_architecture x86).$semver"
+ local kreFullName=$(_kvm_requested_version_or_alias "$3")
- [[ ! -d "$KRE_USER_PACKAGES/$kreFullName" ]] && echo "$semver is not an installed KRE version." && return 1
+ [[ ! -d "$KRE_USER_PACKAGES/$kreFullName" ]] && echo "$kreFullName is not an installed KRE version." && return 1
echo "Setting alias '$name' to '$kreFullName'"
- [[ ! -e "$KRE_USER_HOME/alias/" ]] && mkdir "$KRE_USER_HOME/alias/" > /dev/null
echo "$kreFullName" > "$KRE_USER_HOME/alias/$name.alias"
;;
@@ -310,22 +355,22 @@ kvm()
if [ $# == 2 ]; then
local versionOrAlias=$2
local searchGlob=$(_kvm_requested_version_or_alias "$versionOrAlias")
- echo $searchGlob
fi
-
- for f in $(find $KRE_USER_PACKAGES/* -name $searchGlob -type d -prune -exec basename {} \;); do
- #TODO: Format, extract package, version arch etc
- echo -n $f
- if [[ $PATH == *"$KRE_USER_PACKAGES/$f/bin"* ]]; then
- echo " *"
- else
- echo ""
- fi
+ echo ""
+ local formatString="%-6s %-20s %-7s %-12s %s\n"
+ printf "$formatString" "Active" "Version" "Runtime" "Architecture" "Location"
+ printf "$formatString" "------" "-------" "-------" "------------" "--------"
+ for f in $(find $KRE_USER_PACKAGES/* -name "$searchGlob" -type d -prune -exec basename {} \;); do
+ local active=""
+ [[ $PATH == *"$KRE_USER_PACKAGES/$f/bin"* ]] && local active=" *"
+ local pkgName=$(_kvm_package_runtime "$f")
+ local pkgVersion=$(_kvm_package_version "$f")
+ printf "$formatString" "$active" "$pkgVersion" "$pkgName" "x86" "$KRE_USER_PACKAGES"
[[ $# == 2 ]] && echo "" && return 0
done
echo ""
- [[ $# == 2 ]] && return 1 # kvm list xxx - xxx was not found
+ [[ $# == 2 ]] && echo "$versionOrAlias not found" && return 1
;;
*)