#!/usr/bin/env bash set -euo pipefail # Erwartet: $TAG, $GITEA_URL, $GITEA_TOKEN, $GITEA_OWNER, $GITEA_REPO if [[ -z "${TAG:-}" ]]; then echo "❌ TAG is not set." exit 1 fi VERBOSE="${VERBOSE:-false}" # Funktion zur bedingten curl-Ausgabe curl_exec() { if [[ "$VERBOSE" == "true" ]]; then curl -v "$@" else curl -s "$@" fi } # Defaults (können durch INPUT_* oder ENV überschrieben werden) GITEA_URL="${INPUT_GITEA_URL:-${GITEA_URL:-https://gitea.example.tld}}" GITEA_TOKEN="${INPUT_GITEA_TOKEN:-${GITEA_TOKEN:-}}" GITEA_OWNER="${INPUT_GITEA_OWNER:-${GITEA_OWNER:-${GITHUB_REPOSITORY%%/*}}}" GITEA_REPO="${INPUT_GITEA_REPO:-${GITEA_REPO:-${GITHUB_REPOSITORY##*/}}}" # Zielverzeichnis vorbereiten OUT_DIR="/tmp/gitea_release_${TAG}" mkdir -p "$OUT_DIR/assets" # Release-ID abrufen RELEASE_META=$(curl_exec -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/tags/$TAG") RELEASE_ID=$(echo "$RELEASE_META" | jq -r '.id') if [[ -z "$RELEASE_ID" || "$RELEASE_ID" == "null" ]]; then echo "❌ Release '$TAG' nicht gefunden." exit 1 fi # Vollständige Release-Details abrufen RELEASE_JSON=$(curl_exec -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/$RELEASE_ID") echo "$RELEASE_JSON" > "$OUT_DIR/release.json" echo "✅ Metadaten gespeichert unter: $OUT_DIR/release.json" # Assets herunterladen ASSETS=$(echo "$RELEASE_JSON" | jq -c '.assets[]?') for asset in $ASSETS; do NAME=$(echo "$asset" | jq -r '.name') URL=$(echo "$asset" | jq -r '.browser_download_url') echo "⬇ Lade Asset '$NAME' herunter ..." if [[ "$VERBOSE" == "true" ]]; then curl -L -H "Authorization: token $GITEA_TOKEN" "$URL" -o "$OUT_DIR/assets/$NAME" else curl -sL -H "Authorization: token $GITEA_TOKEN" "$URL" -o "$OUT_DIR/assets/$NAME" fi done echo "GT_RSA_RELEASE_DIR=$OUT_DIR" >> "$GITHUB_ENV" echo "✅ Alle Assets gespeichert unter: $OUT_DIR/assets" echo "✅ Release-Metadaten gespeichert unter: $OUT_DIR/release.json"