#!/bin/bash set -e # Publishes bb64 (both arm64 and amd64) to the Gitea Releases page for the repository. # Increments the version number in the VERSION file by one first. # Builds the bb64 binary for arm64 and amd64. # Uploads the binaries to the Gitea Releases page. # Prints a message to the user. # Increment version if [ ! -f version.h ]; then echo "version.h not found!" >&2 exit 1 else v=$(cat version.h | grep -o 'static const char \*VERSION = "[0-9.]*";' | cut -d'"' -f2) v=$((v+1)) echo "Incrementing version from $v to $v" >&2 echo "static const char *VERSION = \"$v\";" > version.h fi TAG="v$v" # Build binaries ./build.sh # Find repo info from .git/config REPO_URL=$(git config --get remote.origin.url) if [[ ! $REPO_URL =~ gitea ]]; then echo "Remote origin is not a Gitea repository: $REPO_URL" >&2 exit 1 fi # Extract base URL, owner, and repo # Example: https://gitea.example.com/username/reponame.git BASE_URL=$(echo "$REPO_URL" | sed -E 's#(https?://[^/]+)/.*#\1#') OWNER=$(echo "$REPO_URL" | sed -E 's#.*/([^/]+)/[^/]+(\.git)?$#\1#') REPO=$(echo "$REPO_URL" | sed -E 's#.*/([^/]+)(\.git)?$#\1#') API_URL="$BASE_URL/api/v1/repos/$OWNER/$REPO" # Check for GITEA_TOKEN if [ -z "$GITEA_TOKEN_DEPLOY" ]; then echo "GITEA_TOKEN_DEPLOY environment variable not set!" >&2 exit 1 fi # Create release RELEASE_DATA=$(cat <&2 exit 1 fi # Upload binaries for BIN in bb64.amd64 bb64.arm64; do if [ -f "output/$BIN" ]; then curl -s -X POST "$API_URL/releases/$RELEASE_ID/assets?name=$BIN" \ -H "Content-Type: application/octet-stream" \ -H "Authorization: token $GITEA_TOKEN_DEPLOY" \ --data-binary @"output/$BIN" echo "Uploaded $BIN to release $TAG." fi done echo "Published bb64 version $v to $REPO_URL (tag $TAG) with binaries."