Implemented alias functionality
Implemented use functionality fixed download of files - added check requested version exists modified unpack to set shell scripts as executable
This commit is contained in:
parent
ff41e7d743
commit
aa1fed24f6
55
kvm.sh
55
kvm.sh
|
|
@ -6,9 +6,6 @@ SCRIPTPATH="$_"
|
|||
|
||||
#Exit script when any command returns non 0 exit code
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
_kvm_has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
return $?
|
||||
|
|
@ -21,11 +18,13 @@ if _kvm_has "unsetopt"; then
|
|||
KVM_CD_FLAGS="-q"
|
||||
fi
|
||||
|
||||
|
||||
eval USERKREPATH=~/.kre
|
||||
USERKREPACKAGES="$USERKREPATH/packages"
|
||||
MONO45=
|
||||
X86=
|
||||
X64=
|
||||
NUGETAPIURL="https://www.myget.org/F/aspnetvnext/api/v2"
|
||||
|
||||
# Traverse up in directory tree to find containing folder
|
||||
_kvm_find_up() {
|
||||
|
|
@ -54,8 +53,6 @@ _kvm_rc_version() {
|
|||
}
|
||||
|
||||
_kvm_find_latest() {
|
||||
echo "Determining latest version"
|
||||
|
||||
local platform="mono45"
|
||||
local architecture="x86"
|
||||
|
||||
|
|
@ -64,7 +61,7 @@ _kvm_find_latest() {
|
|||
return 1
|
||||
fi
|
||||
|
||||
local url="https://www.myget.org/F/aspnetvnext/api/v2/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
|
||||
local url="$NUGETAPIURL/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
|
||||
local xml=$(curl -silent -L -u aspnetreadonly:4d8a2d9c-7b80-4162-9978-47e918c9658c $url)
|
||||
|
||||
version=$(echo $xml | sed "s/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/")
|
||||
|
|
@ -73,7 +70,7 @@ _kvm_find_latest() {
|
|||
}
|
||||
|
||||
_kvm_strip_path() {
|
||||
echo "$1" | sed -e "s#$KVM_DIR/[^/]*$2[^:]*:##g" -e "s#:$KVM_DIR/[^/]*$2[^:]*##g" -e "s#$KVM_DIR/[^/]*$2[^:]*##g"
|
||||
echo "$1" | sed -e "s#$USERKREPACKAGES/[^/]*$2[^:]*:##g" -e "s#:$USERKREPACKAGES/[^/]*$2[^:]*##g" -e "s#$USERKREPACKAGES/[^/]*$2[^:]*##g"
|
||||
}
|
||||
|
||||
_kvm_prepend_path() {
|
||||
|
|
@ -90,7 +87,7 @@ _kvm_download() {
|
|||
|
||||
local pkgName=$(echo "$kreFullName" | sed "s/\([^.]*\).*/\1/")
|
||||
local pkgVersion=$(echo "$kreFullName" | sed "s/[^.]*.\(.*\)/\1/")
|
||||
local url="https://www.myget.org/F/aspnetvnext/api/v2/package/$pkgName/$pkgVersion"
|
||||
local url="$NUGETAPIURL/package/$pkgName/$pkgVersion"
|
||||
local kreFile="$kreFolder/$kreFullName.nupkg"
|
||||
|
||||
if [ -e "$kreFolder" ]; then
|
||||
|
|
@ -98,7 +95,7 @@ _kvm_download() {
|
|||
return 0
|
||||
fi
|
||||
|
||||
echo "Downloading" $kreFullName "from https://www.myget.org/F/aspnetvnext/api/v2/"
|
||||
echo "Downloading $kreFullName from $NUGETAPIURL"
|
||||
|
||||
if ! _kvm_has "curl"; then
|
||||
echo "KVM Needs curl to proceed." >&2;
|
||||
|
|
@ -107,7 +104,10 @@ _kvm_download() {
|
|||
|
||||
mkdir -p "$kreFolder" > /dev/null 2>&1
|
||||
|
||||
curl -silent -L -u aspnetreadonly:4d8a2d9c-7b80-4162-9978-47e918c9658c "$url" -o "$kreFile"
|
||||
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 $NUGETAPIURL" && return 1
|
||||
[[ $httpResult != "302" ]] && echo "Http Error $httpResult fetching $kreFullName from $NUGETAPIURL" && return 1
|
||||
|
||||
_kvm_unpack $kreFile $kreFolder
|
||||
}
|
||||
|
|
@ -131,6 +131,10 @@ _kvm_unpack() {
|
|||
|
||||
[ -e "$kreFolder/package/" ] && rm -rf "$kreFolder/_package/"
|
||||
|
||||
#Set shell commands as executable
|
||||
find "$kreFolder/bin/" -type f \
|
||||
-exec sh -c "head -c 11 {} | grep '/bin/bash' > /dev/null" \; -print | xargs chmod 775
|
||||
|
||||
}
|
||||
|
||||
# This is not really needed. Placeholder until I get clarification on the supported platforms for mono
|
||||
|
|
@ -225,8 +229,9 @@ kvm()
|
|||
|
||||
"upgrade" )
|
||||
[ $# -ne 1 ] && kvm help && return
|
||||
|
||||
echo "Determining latest version"
|
||||
local version=$(_kvm_find_latest mono45 x86)
|
||||
|
||||
kvm install $version
|
||||
kvm alias default $version
|
||||
;;
|
||||
|
|
@ -250,8 +255,8 @@ kvm()
|
|||
fi
|
||||
|
||||
echo "Adding $kreBin to current 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")
|
||||
else
|
||||
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
|
||||
local kreFolder="$USERKREPACKAGES/$kreFullName"
|
||||
|
|
@ -310,14 +315,32 @@ kvm()
|
|||
;;
|
||||
|
||||
"alias" )
|
||||
[ $# -gt 4 ] && kvm help && return
|
||||
[ $# -gt 3 ] && kvm help && return
|
||||
|
||||
if [[ $# == 1 ]]; then
|
||||
for f in $(find "$USERKREPATH/alias" -name *.alias); do echo -n "$(basename $f | sed 's/.alias//'): "; cat "$f"; done
|
||||
echo ""
|
||||
return;
|
||||
fi
|
||||
|
||||
local name="$2"
|
||||
|
||||
if [[ $# == 2 ]]; then
|
||||
[[ ! -e "$USERKREPATH/alias/$name.alias" ]] && echo "There is no alias called '$name'" && return
|
||||
cat "$USERKREPATH/alias/$name.alias"
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
|
||||
local alias="$2"
|
||||
local semver="$3"
|
||||
local kreFullName="KRE-$(_kvm_requested_platform mono45)-$(_kvm_requested_architecture x86).$semver"
|
||||
|
||||
echo "alias $alias $semver - TBD ..."
|
||||
echo "Setting alias '$name' to '$kreFullName'"
|
||||
[[ ! -e "$USERKREPATH/alias/" ]] && mkdir "$USERKREPATH/alias/" > /dev/null
|
||||
|
||||
echo "$kreFullName" > "$USERKREPATH/alias/$name.alias"
|
||||
;;
|
||||
|
||||
"list" )
|
||||
# TBD, this lets our persistant impl work for now
|
||||
echo "default"
|
||||
|
|
|
|||
Loading…
Reference in New Issue