#!/usr/bin/env bash

set -euo pipefail

usage() {
    printf 'Usage: GITEA_TOKEN=... %s PATH_TO_RPM\n' "$0" >&2
}

if (( $# != 1 )); then
    usage
    exit 2
fi

repo_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
payload_config="$repo_root/plasma-fingerprint-workaround/payload.conf"
rpm_path=$1

if [[ ! -f $rpm_path || $rpm_path != *.rpm ]]; then
    printf 'Error: %s is not an RPM file.\n' "$rpm_path" >&2
    exit 2
fi

if [[ -z ${GITEA_TOKEN:-} ]]; then
    printf 'Error: set GITEA_TOKEN to a Gitea access token with package write permission.\n' >&2
    exit 2
fi

payload_url=
payload_sha256=
# shellcheck source=/dev/null
source "$payload_config"

actual_sha256=$(sha256sum "$rpm_path")
actual_sha256=${actual_sha256%% *}
if [[ $actual_sha256 != "$payload_sha256" ]]; then
    printf 'Error: RPM checksum does not match payload.conf.\n' >&2
    exit 1
fi

if [[ ${rpm_path##*/} != "${payload_url##*/}" ]]; then
    printf 'Error: RPM filename does not match payload.conf.\n' >&2
    exit 1
fi

curl \
    --fail-with-body \
    --show-error \
    --silent \
    --user "ajp_anton:${GITEA_TOKEN}" \
    --upload-file "$rpm_path" \
    "$payload_url"

printf 'Published %s as a generic Gitea package.\n' "$rpm_path"
