bb64/publish.sh
Your Name 9fdb979c26 .
2025-05-12 18:59:26 +12:00

89 lines
2.3 KiB
Bash
Executable File

#!/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_DEPLOY or GITEA_TOKEN
if [ -n "$GITEA_TOKEN_DEPLOY" ]; then
TOKEN="$GITEA_TOKEN_DEPLOY"
elif [ -n "$GITEA_TOKEN" ]; then
TOKEN="$GITEA_TOKEN"
else
echo "GITEA_TOKEN_DEPLOY or GITEA_TOKEN environment variable not set!" >&2
exit 1
fi
# Create release
RELEASE_DATA=$(cat <<EOF
{
"tag_name": "$TAG",
"name": "$TAG",
"body": "bb64 release $TAG",
"draft": false,
"prerelease": false
}
EOF
)
RELEASE_ID=$(curl -s -X POST "$API_URL/releases" \
-H "Content-Type: application/json" \
-H "Authorization: token $TOKEN" \
-d "$RELEASE_DATA" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
if [ -z "$RELEASE_ID" ]; then
echo "Failed to create release on Gitea." >&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 $TOKEN" \
--data-binary @"output/$BIN"
echo "Uploaded $BIN to release $TAG."
fi
done
echo "Published bb64 version $v to $REPO_URL (tag $TAG) with binaries."