#!/usr/bin/env bash # Creates the Gitea release for the current tag and attaches the VPM zip built by package.sh. # # Needs `curl` and `jq`: run it inside `nix develop`. # # Environment: # TOKEN required, Gitea token with repository write access # SERVER required, e.g. https://git.scug.io # REPO required, e.g. doloro/av3-animation-as-crab # TAG required, release tag set -euo pipefail root=$(cd "$(dirname "$0")/.." && pwd) manifest="$root/csharp/dev.doloro.animator-as-crab/package.json" id=$(jq -r .name "$manifest") version=${VPM_VERSION:-$(jq -r .version "$manifest")} zip="$root/vpm/dist/$id-$version.zip" zip_name=$(basename "$zip") [ -f "$zip" ] || { echo "missing $zip; run package.sh first" >&2; exit 1; } # Delete existing release with same tag if present (needed for rolling tags like continuous) existing=$(curl -fsS -H "Authorization: token $TOKEN" \ "$SERVER/api/v1/repos/$REPO/releases/tags/$TAG" 2>/dev/null || true) if [ -n "$existing" ] && [ "$existing" != 'null' ]; then existing_id=$(jq -r .id <<<"$existing") echo "deleting existing release $existing_id for tag $TAG" curl -fsS -X DELETE -H "Authorization: token $TOKEN" \ "$SERVER/api/v1/repos/$REPO/releases/$existing_id" fi release=$(curl -fsS -X POST \ -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ "$SERVER/api/v1/repos/$REPO/releases" \ -d "$(jq -n --arg tag "$TAG" --arg name "$id $version" '{tag_name: $tag, name: $name}')") asset_url="$SERVER/api/v1/repos/$REPO/releases/$(jq -r .id <<<"$release")/assets?name=$zip_name" curl -fsS -X POST \ -H "Authorization: token $TOKEN" \ "$asset_url" \ -F "attachment=@$zip" echo "released $TAG with $zip_name"