#!/usr/bin/env bash # Anexa arquivos a uma release do Gitea, trocando os de mesmo nome (assim uma # execução repetida do CI não falha por anexo duplicado). # # API=https://git.exemplo.com/api/v1/repos/dono/repo TOKEN=... \ # scripts/release-upload.sh v1.2.3 arquivo1 arquivo2 set -euo pipefail : "${API:?defina API (URL do repositório na API do Gitea)}" : "${TOKEN:?defina TOKEN}" tag=${1:?uso: release-upload.sh ...} shift auth=(-H "Authorization: token $TOKEN") id=$(curl -fsS "${auth[@]}" "$API/releases/tags/$tag" | jq -r .id) for file in "$@"; do name=$(basename "$file") encoded=$(jq -rn --arg n "$name" '$n|@uri') for old in $(curl -fsS "${auth[@]}" "$API/releases/$id/assets" | jq -r --arg n "$name" '.[] | select(.name == $n) | .id'); do curl -fsS -X DELETE "${auth[@]}" "$API/releases/$id/assets/$old" done curl -fsS -X POST "${auth[@]}" -F "attachment=@$file" "$API/releases/$id/assets?name=$encoded" >/dev/null echo "enviado: $name" done