wavetable/release.sh
Roland Rabien 098a5f3303 release: harden upload pipeline (TAG/VER split, --fail-with-body, GITHUB_TOKEN, contents:write)
Aligns with the chip-plugin repos:
- Use TAG (with v prefix) for gh release create, VER (stripped) for
  Changelist lookup and upload.php's version field.
- curl --fail-with-body so server-side errors fail the workflow instead of
  passing silently.
- Switch GH_TOKEN to the auto-provided GITHUB_TOKEN with explicit
  contents:write permission, dropping the dependency on a per-repo
  ACCESS_TOKEN PAT.
2026-04-30 09:25:23 -07:00

49 lines
1.4 KiB
Bash
Executable file

#!/bin/bash -e
set -x
cd "$(dirname "$0")"
ROOT=$(pwd)
TAG="$GITHUB_REF_NAME"
# Tags are pushed with a leading "v" (see tag.sh); strip for the changelog
# lookup and the upload.php version field, but use TAG for gh release create.
VER="${TAG#v}"
# Extract the changelog section for the current version
# Matches version with optional colon, captures until the next version line or EOF
NOTES=$(awk -v ver="$VER" '
BEGIN { found=0; printing=0; pattern="^"ver":?$" }
$0 ~ pattern { found=1; printing=1; next }
printing && /^[0-9]+\.[0-9]+\.[0-9]+:?$/ { printing=0 }
printing { print }
END { if (!found) exit 1 }
' ./Changelist.txt)
if [ $? -ne 0 ] || [ -z "$NOTES" ]; then
echo "Error: Version $VER not found in Changelist.txt or has no content"
exit 1
fi
echo "$NOTES" > /tmp/release_notes.txt
ASSETS=(
"./Binaries Linux"/*.deb
"./Binaries Windows"/*.exe
"./Binaries macOS"/*.pkg
)
if [ -f "./Binaries macOS/Symbols_Mac.zip" ]; then
ASSETS+=("./Binaries macOS/Symbols_Mac.zip")
fi
gh release create "$TAG" --title "$TAG" -F /tmp/release_notes.txt "${ASSETS[@]}"
PLUGIN=wavetable
for f in "./Binaries Linux"/*.deb \
"./Binaries Windows"/*.exe \
"./Binaries macOS"/*.pkg; do
curl -sS --fail-with-body -F "files=@${f}" \
-F "plugin=${PLUGIN}" \
-F "version=${VER}" \
-F "changelog=${NOTES}" \
"https://socalabs.com/files/upload.php?key=$APIKEY"
done