Files
av3-animation-as-crab/vpm/publish.sh
T
doloro 31affff9dd
ci / Nix flake checks (push) Successful in 8s
continuous / Publish continuous release (push) Successful in 13s
ci: add continuous release workflow for rolling VPM pre-releases
2026-09-19 18:05:39 +01:00

46 lines
1.7 KiB
Bash
Executable File

#!/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"