54 lines
1.2 KiB
Bash
Executable File
54 lines
1.2 KiB
Bash
Executable File
#!/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"
|