#!/bin/sh

set -e

if [ -z "${1}" ] || [ -z "${2}" ]; then
        echo "Usage: update.sh \"Ubuntu 20.04\" \"ubuntu-20-20260505.xz\""
        exit 1
fi

cp metadata.json "metadata.json.$(date +"%F-%H-%M-%S")"

name=${1}
filename=${2}
image_name=$(basename "${filename}" .xz)

shasum=$(sha1sum "${filename}" | awk '{print $1}')
updated=$(TZ=UTC date +"%F %T")
imagesize=$(du -s --block-size=M "${filename}" | awk '{print $1}' | sed 's/M//')

cat metadata.json | jq \
        --arg date "${updated}" \
        --arg checksum "${shasum}" \
        --arg name "${name}" \
        --arg filename "${filename}" \
        --arg image_name "${image_name}" \
        --arg imagesize ${imagesize} \
                '(.os[] | select(.name == $name) | .updated_at) |= $date |
                 (.os[] | select(.name == $name) | .file_name) |= $filename |
                 (.os[] | select(.name == $name) | .image_name) |= $image_name |
                 (.os[] | select(.name == $name) | .archive_size_mib) |= ($imagesize | tonumber) |
                 (.os[] | select(.name == $name) | .checksum) |= $checksum' > metadata.json.new

cp metadata.json.new metadata.json

cat metadata.json | jq --arg name "${name}" '.os[] | select(.name == $name)'
