CI / Formatação e clippy (push) Successful in 1m9s
CI / Auditoria de dependências (push) Successful in 12s
CI / Testes (Linux) (push) Successful in 1m34s
Release / Cria a release (push) Successful in 5s
CI / Compila o app desktop (Linux) (push) Successful in 1m36s
Release / CLI (linux-aarch64) (push) Successful in 1m23s
Release / CLI (linux-x86_64) (push) Successful in 1m40s
Release / App desktop (linux-aarch64) (push) Successful in 7m32s
Release / App desktop (linux-x86_64) (push) Failing after 9m5s
Release / App desktop (windows) (push) Failing after 6m20s
26 lines
994 B
Bash
Executable File
26 lines
994 B
Bash
Executable File
#!/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 <tag> <arquivo>...}
|
|
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
|