forked from Bitmessage/sysdeploy
97 lines
2.3 KiB
Bash
97 lines
2.3 KiB
Bash
#!/bin/bash
|
|
|
|
OS_CODENAME=focal
|
|
OS_VERSION=20.04
|
|
|
|
|
|
function get_streams()
|
|
{
|
|
if [ -e "$streams" ]; then
|
|
return 0
|
|
fi
|
|
streams="$(mktemp)"
|
|
wget -qO "$streams" https://images.maas.io/ephemeral-v3/stable/streams/v1/com.ubuntu.maas:stable:v3:download.json
|
|
}
|
|
|
|
function get_latest_maas_id()
|
|
{
|
|
if [ ! -f "$streams" ]; then
|
|
return 1
|
|
fi
|
|
release_version=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'")|.versions|keys|max' \
|
|
"$streams")
|
|
}
|
|
|
|
function get_checksum()
|
|
{
|
|
local release_version="$1"
|
|
local filename="$2"
|
|
if [ ! -f "$streams" ]; then
|
|
return 1
|
|
fi
|
|
checksum=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'").versions."'"$release_version"'".items."'"$filename"'".sha256' \
|
|
"$streams")
|
|
}
|
|
|
|
function file_url()
|
|
{
|
|
local release_version="$1"
|
|
local filename="$2"
|
|
local baseurl="https://images.maas.io/ephemeral-v3/stable"
|
|
|
|
if [ ! -f "$streams" ]; then
|
|
return 1
|
|
fi
|
|
url=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'").versions."'"$release_version"'".items."'"$filename"'".path' \
|
|
"$streams")
|
|
if [ -n "$MAAS_DOWNLOAD_URL" ]; then
|
|
baseurl="$MAAS_DOWNLOAD_URL"
|
|
fi
|
|
url="$baseurl/$url"
|
|
}
|
|
|
|
function verify_only()
|
|
{
|
|
local release_version="$1"
|
|
local fname="$2"
|
|
get_checksum "$release_version" "$fname"
|
|
sha256sum=$(sha256sum "$fname"|cut -d\ -f1)
|
|
if [ "$sha256sum" == "$checksum" ]; then
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
function download_and_verify()
|
|
{
|
|
local release_version="$1"
|
|
local fname="$2"
|
|
|
|
file_url "$release_version" "$fname"
|
|
|
|
if [ -f "$fname" ]; then
|
|
if verify_only "$release_version" "$fname"; then
|
|
echo "$fname already downloaded, skipping"
|
|
return 0
|
|
fi
|
|
echo "Deleting $fname"
|
|
rm -f "$fname"
|
|
fi
|
|
wget "$url" -O "$fname"
|
|
if verify_only "$release_version" "$fname"; then
|
|
return 0
|
|
fi
|
|
echo "Checksum fail"
|
|
rm -f "$fname"
|
|
return 1
|
|
}
|
|
|
|
function cleanup_temp()
|
|
{
|
|
if [ -f "$streams" ]; then
|
|
rm -f "$streams"
|
|
fi
|
|
}
|
|
|
|
# vim: set ft=sh:
|