#!/usr/bin/env bash set -euo pipefail : "${GITEA_SERVER_URL:?Missing GITEA_SERVER_URL}" : "${GITEA_REPOSITORY_OWNER:?Missing GITEA_REPOSITORY_OWNER}" : "${RELEASE_ASSETS_DIR:?Missing RELEASE_ASSETS_DIR}" owner="${GITEA_REPOSITORY_OWNER}" package_user="${RPM_PACKAGE_USERNAME:-${GITEA_REPOSITORY_OWNER}}" token="${RPM_PACKAGE_TOKEN:-}" group="${RPM_PACKAGE_GROUP:-}" if [[ -z "$package_user" ]]; then echo "Missing package upload username. Set repository or organization variable RPM_PACKAGE_USERNAME." >&2 exit 1 fi if [[ -z "$token" ]]; then echo "Missing package upload token. Set repository or organization secret RPM_PACKAGE_TOKEN." >&2 exit 1 fi upload_url="${GITEA_SERVER_URL%/}/api/packages/${owner}/rpm" if [[ -n "$group" ]]; then upload_url="${upload_url}/${group}" fi upload_url="${upload_url}/upload" shopt -s nullglob found_rpm=0 for rpm in "$RELEASE_ASSETS_DIR"/*.rpm; do case "$rpm" in *.src.rpm) continue ;; esac found_rpm=1 http_code="$(curl --silent --show-error \ --write-out '%{http_code}' \ --output /tmp/package-upload-response \ --user "${package_user}:${token}" \ --upload-file "$rpm" \ "$upload_url")" case "$http_code" in 201) echo "Uploaded $(basename "$rpm") to the RPM package registry." ;; 409) echo "Package already exists for $(basename "$rpm"); skipping duplicate upload." ;; *) echo "Failed to upload $(basename "$rpm") to $upload_url (HTTP $http_code)." >&2 cat /tmp/package-upload-response >&2 || true exit 1 ;; esac done shopt -u nullglob if [[ "$found_rpm" -ne 1 ]]; then echo "No binary RPM artifacts were found to upload." >&2 exit 1 fi