#!/bin/bash set -e # 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 ./multibuild.sh if [ ! -f "build/dropshell.amd64" ]; then echo "build/dropshell.amd64 not found!" >&2 echo "Please run multibuild.sh first." >&2 exit 1 fi if [ ! -f "build/dropshell.arm64" ]; then echo "build/dropshell.arm64 not found!" >&2 echo "Please run multibuild.sh first." >&2 exit 1 fi TAG=$(./build/dropshell.amd64 --version) echo "Publishing dropshell version $TAG" # make sure we've commited. git add . && git commit -m "dropshell release $TAG" && git push # 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" # Create release RELEASE_DATA=$(cat <<EOF { "tag_name": "$TAG", "name": "$TAG", "body": "dropshell 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 and install.sh for FILE in dropshell.amd64 dropshell.arm64 install.sh server_autosetup.sh; do if [ -f "build/$FILE" ]; then filetoupload="build/$FILE" elif [ -f "$FILE" ]; then filetoupload="$FILE" else echo "File $FILE not found!" >&2 continue fi # Auto-detect content type ctype=$(file --mime-type -b "$filetoupload") curl -s -X POST "$API_URL/releases/$RELEASE_ID/assets?name=$FILE" \ -H "Content-Type: $ctype" \ -H "Authorization: token $TOKEN" \ --data-binary @"$filetoupload" echo "Uploaded $FILE to release $TAG as $ctype." done echo "Published dropshell version $TAG to $REPO_URL (tag $TAG) with binaries."