46 lines
1.7 KiB
Bash
Executable File
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"
|