#!/bin/bash # Upload macOS Build to Forgejo Packages # Usage: ./upload_to_packages.sh -v 1.0.0 -t $token set -e # Parse arguments VERSION="" FORGEJO_TOKEN="" FORGEJO_URL="https://git.him-tools.de" REPO="HIM-public/webdrop-bridge" DMG_PATH="build/dist/macos/WebDropBridge.dmg" CHECKSUM_PATH="build/dist/macos/WebDropBridge.dmg.sha256" while [[ $# -gt 0 ]]; do case $1 in -v|--version) VERSION="$2"; shift 2;; -t|--token) FORGEJO_TOKEN="$2"; shift 2;; -u|--url) FORGEJO_URL="$2"; shift 2;; *) echo "Unknown option: $1"; exit 1;; esac done if [ -z "$VERSION" ] || [ -z "$FORGEJO_TOKEN" ]; then echo "Usage: $0 -v VERSION -t TOKEN [-u FORGEJO_URL]" echo "Example: $0 -v 1.0.0 -t your_token_here" exit 1 fi # Verify files exist if [ ! -f "$DMG_PATH" ]; then echo "ERROR: DMG file not found at $DMG_PATH" exit 1 fi if [ ! -f "$CHECKSUM_PATH" ]; then echo "ERROR: Checksum file not found at $CHECKSUM_PATH" exit 1 fi echo "Uploading WebDropBridge $VERSION to Forgejo Packages..." # Get file info DMG_SIZE=$(du -m "$DMG_PATH" | cut -f1) CHECKSUM=$(cat "$CHECKSUM_PATH") echo "File: WebDropBridge.dmg ($DMG_SIZE MB)" echo "Checksum: ${CHECKSUM:0:16}..." # Upload DMG echo "" echo "Uploading DMG..." DMG_URL="$FORGEJO_URL/api/v1/repos/$REPO/packages/generic/webdrop-bridge/$VERSION/WebDropBridge.dmg" HTTP_CODE=$(curl -s -w "%{http_code}" -X PUT \ -H "Authorization: token $FORGEJO_TOKEN" \ --data-binary "@$DMG_PATH" \ -H "Content-Type: application/octet-stream" \ "$DMG_URL" \ -o /tmp/curl_response.txt) if [ "$HTTP_CODE" -eq 201 ] || [ "$HTTP_CODE" -eq 200 ]; then echo "✓ DMG uploaded successfully" else echo "ERROR uploading DMG (HTTP $HTTP_CODE)" cat /tmp/curl_response.txt exit 1 fi # Upload checksum echo "Uploading checksum..." CHECKSUM_URL="$FORGEJO_URL/api/v1/repos/$REPO/packages/generic/webdrop-bridge/$VERSION/WebDropBridge.dmg.sha256" HTTP_CODE=$(curl -s -w "%{http_code}" -X PUT \ -H "Authorization: token $FORGEJO_TOKEN" \ -d "$CHECKSUM" \ -H "Content-Type: text/plain" \ "$CHECKSUM_URL" \ -o /tmp/curl_response.txt) if [ "$HTTP_CODE" -eq 201 ] || [ "$HTTP_CODE" -eq 200 ]; then echo "✓ Checksum uploaded successfully" else echo "ERROR uploading checksum (HTTP $HTTP_CODE)" cat /tmp/curl_response.txt exit 1 fi echo "" echo "✓ Upload complete!" echo "View at: $FORGEJO_URL/$REPO/packages"