#!/bin/bash

# Determine the tag
echo "Figuring out the tag..."
TAG=$(git describe --tags --exact-match 2>/dev/null || echo "")
if [ -z "$TAG" ]; then
  # Get the latest tag
  LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
  # Increment the patch version
  IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_TAG"
  VERSION_PARTS[2]=$((VERSION_PARTS[2]+1))
  TAG="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.${VERSION_PARTS[2]}"
  # Create a new tag
  git tag $TAG
  git push origin $TAG
fi
echo "Tag: $TAG"

# Build the application
echo "Building the thing..."
flutter build windows --release
flutter build apk --release

echo "Creating a release..."
TOKEN="$GITEA_API_KEY"
GITEA="https://git.site.quack-lab.dev"
REPO="dave/flutter-gamer-updater"
ZIP="gamer-updater-${TAG}.zip"
APK="gamer-updater-${TAG}.apk"
# Create a release
RELEASE_RESPONSE=$(curl -s -X POST \
  -H "Authorization: token $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "tag_name": "'"$TAG"'",
    "name": "'"$TAG"'",
    "draft": false,
    "prerelease": false
  }' \
  $GITEA/api/v1/repos/$REPO/releases)

# Extract the release ID
echo $RELEASE_RESPONSE
RELEASE_ID=$(echo $RELEASE_RESPONSE | awk -F'"id":' '{print $2+0; exit}')
echo "Release ID: $RELEASE_ID"

echo "Uploading the things..."
WINRELEASE="./build/windows/x64/runner/Release/"
7z a $WINRELEASE/$ZIP $WINRELEASE/*
curl -X POST \
  -H "Authorization: token $TOKEN" \
  -F "attachment=@$WINRELEASE/$ZIP" \
  "$GITEA/api/v1/repos/$REPO/releases/${RELEASE_ID}/assets?name=$ZIP"
rm $WINRELEASE/$ZIP

ANDROIDRELEASE="./build/app/outputs/flutter-apk/"
mv $ANDROIDRELEASE/app-release.apk $ANDROIDRELEASE/$APK
curl -X POST \
  -H "Authorization: token $TOKEN" \
  -F "attachment=@$ANDROIDRELEASE/$APK" \
  "$GITEA/api/v1/repos/$REPO/releases/${RELEASE_ID}/assets?name=$APK"