From 18ad29b501bf920a53d2f852fe56f0bec504b227 Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 8 Jul 2026 23:11:58 +0000 Subject: [PATCH] Add Gitea release mirror script --- scripts/mirror-gitea-release.sh | 115 ++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100755 scripts/mirror-gitea-release.sh diff --git a/scripts/mirror-gitea-release.sh b/scripts/mirror-gitea-release.sh new file mode 100755 index 0000000..6f9cbfa --- /dev/null +++ b/scripts/mirror-gitea-release.sh @@ -0,0 +1,115 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { + cat >&2 <<'EOF' +Usage: scripts/mirror-gitea-release.sh TAG APK_PATH [VERSION_CODE] [VERSION_NAME] + +Mirrors an already-built APK to the Gitea release for TAG and uploads a +Gitea-specific latest.json. + +Token source: + TMUX_GITEA_TOKEN environment variable, or hidden stdin prompt. +EOF +} + +if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then + usage + exit 0 +fi + +if [ "$#" -lt 2 ] || [ "$#" -gt 4 ]; then + usage + exit 2 +fi + +TAG="$1" +APK_PATH="$2" +VERSION_NAME="${4:-${TAG#v}}" + +if [ ! -f "$APK_PATH" ]; then + echo "APK not found: $APK_PATH" >&2 + exit 1 +fi + +if [ -n "${3:-}" ]; then + VERSION_CODE="$3" +else + IFS=. read -r MAJOR MINOR PATCH <&2 + IFS= read -rs TOKEN + printf "\n" >&2 +fi + +if [ -z "$TOKEN" ]; then + echo "Missing Gitea token." >&2 + exit 1 +fi + +API_ROOT="https://gitea.neatcn.com/api/v1/repos/tmux/tmux-browser-android" +RELEASE_PAGE_URL="https://gitea.neatcn.com/tmux/tmux-browser-android/releases/tag/${TAG}" +APK_URL="https://gitea.neatcn.com/tmux/tmux-browser-android/releases/download/${TAG}/tmux-android.apk" +SHA256="$(sha256sum "$APK_PATH" | cut -d " " -f 1)" +WORK_DIR="$(mktemp -d)" +trap 'rm -rf "$WORK_DIR"' EXIT + +LATEST_JSON="${WORK_DIR}/latest.json" +cat > "$LATEST_JSON" <&2 + exit 1 +fi + +upload_asset() { + local file="$1" + local name="$2" + local type="$3" + curl -fsSL \ + -X POST \ + -H "Authorization: token ${TOKEN}" \ + -F "attachment=@${file};type=${type}" \ + "${API_ROOT}/releases/${RELEASE_ID}/assets?name=${name}" \ + -o "${WORK_DIR}/${name}.asset.json" +} + +upload_asset "$APK_PATH" "tmux-android.apk" "application/vnd.android.package-archive" +upload_asset "$LATEST_JSON" "latest.json" "application/json" + +echo "Mirrored ${TAG} to Gitea release ${RELEASE_ID}" +echo "versionCode=${VERSION_CODE}" +echo "versionName=${VERSION_NAME}" +echo "sha256=${SHA256}"