#!/bin/sh set -eu tag=$1; shift api="${GITHUB_SERVER_URL:-https://git.thepra.dev}/api/v1/repos/$GITHUB_REPOSITORY" call() { printf 'header = "Authorization: token %s"\n' "$RELEASE_TOKEN" | curl -K - -fsS "$@"; } json() { python3 -c "import json,sys; d=json.load(sys.stdin); print($1)"; } if id=$(call "$api/releases/tags/$tag" 2>/dev/null | json 'd["id"]'); then echo "release $tag exists (id $id)" else body=$(python3 -c 'import json,sys; print(json.dumps({"tag_name": sys.argv[1], "name": sys.argv[1], "draft": False, "prerelease": sys.argv[1].startswith("v0.")}))' "$tag") id=$(call -X POST -H 'Content-Type: application/json' -d "$body" "$api/releases" | json 'd["id"]') echo "created release $tag (id $id)" fi for file in "$@"; do name=$(basename "$file") call "$api/releases/$id/assets" | python3 -c 'import json,sys; [print(a["id"]) for a in json.load(sys.stdin) if a["name"] == sys.argv[1]]' "$name" | while read -r old; do call -o /dev/null -X DELETE "$api/releases/$id/assets/$old" done call -o /dev/null -F "attachment=@$file" "$api/releases/$id/assets?name=$name" echo "attached $name ($(du -h "$file" | cut -f1))" done