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
|
#Exit script when any command returns non 0 exit code
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
_kvm_has() {
|
_kvm_has() {
|
||||||
type "$1" > /dev/null 2>&1
|
type "$1" > /dev/null 2>&1
|
||||||
return $?
|
return $?
|
||||||
|
|
@ -21,11 +18,13 @@ if _kvm_has "unsetopt"; then
|
||||||
KVM_CD_FLAGS="-q"
|
KVM_CD_FLAGS="-q"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
eval USERKREPATH=~/.kre
|
eval USERKREPATH=~/.kre
|
||||||
USERKREPACKAGES="$USERKREPATH/packages"
|
USERKREPACKAGES="$USERKREPATH/packages"
|
||||||
MONO45=
|
MONO45=
|
||||||
X86=
|
X86=
|
||||||
X64=
|
X64=
|
||||||
|
NUGETAPIURL="https://www.myget.org/F/aspnetvnext/api/v2"
|
||||||
|
|
||||||
# Traverse up in directory tree to find containing folder
|
# Traverse up in directory tree to find containing folder
|
||||||
_kvm_find_up() {
|
_kvm_find_up() {
|
||||||
|
|
@ -54,8 +53,6 @@ _kvm_rc_version() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_kvm_find_latest() {
|
_kvm_find_latest() {
|
||||||
echo "Determining latest version"
|
|
||||||
|
|
||||||
local platform="mono45"
|
local platform="mono45"
|
||||||
local architecture="x86"
|
local architecture="x86"
|
||||||
|
|
||||||
|
|
@ -64,7 +61,7 @@ _kvm_find_latest() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
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)
|
local xml=$(curl -silent -L -u aspnetreadonly:4d8a2d9c-7b80-4162-9978-47e918c9658c $url)
|
||||||
|
|
||||||
version=$(echo $xml | sed "s/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/")
|
version=$(echo $xml | sed "s/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/")
|
||||||
|
|
@ -73,7 +70,7 @@ _kvm_find_latest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_kvm_strip_path() {
|
_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() {
|
_kvm_prepend_path() {
|
||||||
|
|
@ -90,7 +87,7 @@ _kvm_download() {
|
||||||
|
|
||||||
local pkgName=$(echo "$kreFullName" | sed "s/\([^.]*\).*/\1/")
|
local pkgName=$(echo "$kreFullName" | sed "s/\([^.]*\).*/\1/")
|
||||||
local pkgVersion=$(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"
|
local kreFile="$kreFolder/$kreFullName.nupkg"
|
||||||
|
|
||||||
if [ -e "$kreFolder" ]; then
|
if [ -e "$kreFolder" ]; then
|
||||||
|
|
@ -98,7 +95,7 @@ _kvm_download() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Downloading" $kreFullName "from https://www.myget.org/F/aspnetvnext/api/v2/"
|
echo "Downloading $kreFullName from $NUGETAPIURL"
|
||||||
|
|
||||||
if ! _kvm_has "curl"; then
|
if ! _kvm_has "curl"; then
|
||||||
echo "KVM Needs curl to proceed." >&2;
|
echo "KVM Needs curl to proceed." >&2;
|
||||||
|
|
@ -107,7 +104,10 @@ _kvm_download() {
|
||||||
|
|
||||||
mkdir -p "$kreFolder" > /dev/null 2>&1
|
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
|
_kvm_unpack $kreFile $kreFolder
|
||||||
}
|
}
|
||||||
|
|
@ -131,6 +131,10 @@ _kvm_unpack() {
|
||||||
|
|
||||||
[ -e "$kreFolder/package/" ] && rm -rf "$kreFolder/_package/"
|
[ -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
|
# This is not really needed. Placeholder until I get clarification on the supported platforms for mono
|
||||||
|
|
@ -225,8 +229,9 @@ kvm()
|
||||||
|
|
||||||
"upgrade" )
|
"upgrade" )
|
||||||
[ $# -ne 1 ] && kvm help && return
|
[ $# -ne 1 ] && kvm help && return
|
||||||
|
echo "Determining latest version"
|
||||||
local version=$(_kvm_find_latest mono45 x86)
|
local version=$(_kvm_find_latest mono45 x86)
|
||||||
|
|
||||||
kvm install $version
|
kvm install $version
|
||||||
kvm alias default $version
|
kvm alias default $version
|
||||||
;;
|
;;
|
||||||
|
|
@ -250,8 +255,8 @@ kvm()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Adding $kreBin to current PATH"
|
echo "Adding $kreBin to current PATH"
|
||||||
PATH=`_kvm_strip_path "$PATH" "/bin"`
|
PATH=$(_kvm_strip_path "$PATH" "/bin")
|
||||||
PATH=`_kvm_prepend_path "$PATH" "$kreBin"`
|
PATH=(_kvm_prepend_path "$PATH" "$kreBin")
|
||||||
else
|
else
|
||||||
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
|
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
|
||||||
local kreFolder="$USERKREPACKAGES/$kreFullName"
|
local kreFolder="$USERKREPACKAGES/$kreFullName"
|
||||||
|
|
@ -310,14 +315,32 @@ kvm()
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"alias" )
|
"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 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" )
|
"list" )
|
||||||
# TBD, this lets our persistant impl work for now
|
# TBD, this lets our persistant impl work for now
|
||||||
echo "default"
|
echo "default"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue