#!/usr/bin/env bash
set -euo pipefail

# GoingsOn Android Release Script
# Builds a signed release AAB for Google Play distribution
#
# Prerequisites:
#   - Android SDK + NDK installed (sdkmanager)
#   - Rust Android targets (aarch64-linux-android, etc.)
#   - Signing keystore at ~/.tauri/goingson-android.jks
#   - key.properties in src-tauri/gen/android/
#   - ANDROID_HOME, NDK_HOME, JAVA_HOME set
#
# Usage:
#   ./dist/release-android.sh              # build signed release AAB
#   ./dist/release-android.sh --apk        # build APK instead of AAB
#   ./dist/release-android.sh --debug      # build debug APK

cd "$(dirname "$0")/.."

# --- Configuration ---
ANDROID_HOME="${ANDROID_HOME:-/opt/homebrew/share/android-commandlinetools}"
NDK_HOME="${NDK_HOME:-$ANDROID_HOME/ndk/27.0.12077973}"
JAVA_HOME="${JAVA_HOME:-/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home}"
NDK_BIN="$NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin"
export ANDROID_HOME NDK_HOME JAVA_HOME

# NDK cross-compilation toolchain (needed for vendored OpenSSL)
export PATH="$NDK_BIN:$PATH"
export CC_aarch64_linux_android="$NDK_BIN/aarch64-linux-android24-clang"
export AR_aarch64_linux_android="$NDK_BIN/llvm-ar"
export RANLIB_aarch64_linux_android="$NDK_BIN/llvm-ranlib"

# --- Parse args ---
FORMAT="aab"
DEBUG=false
for arg in "$@"; do
    case "$arg" in
        --apk)   FORMAT="apk" ;;
        --debug) DEBUG=true ;;
        -h|--help)
            echo "Usage: $0 [--apk | --debug]"
            echo "  --apk    Build APK instead of AAB"
            echo "  --debug  Build debug APK"
            exit 0
            ;;
    esac
done

# --- Read version from tauri.conf.json ---
VERSION=$(python3 -c "import json; print(json.load(open('src-tauri/tauri.conf.json'))['version'])")
echo "Version: $VERSION"

# --- Verify prerequisites ---
if [ ! -d "$NDK_HOME" ]; then
    echo "Error: NDK not found at $NDK_HOME"
    echo "Install with: sdkmanager 'ndk;27.0.12077973'"
    exit 1
fi

if [ ! -f "$JAVA_HOME/bin/java" ]; then
    echo "Error: Java not found at $JAVA_HOME"
    echo "Install with: brew install openjdk"
    exit 1
fi

# --- Build ---
if [ "$DEBUG" = true ]; then
    echo ""
    echo "=== Building Android debug APK ==="
    cargo tauri android build --debug --target aarch64
    echo ""
    echo "Debug APK built. Look for output in:"
    echo "  src-tauri/gen/android/app/build/outputs/apk/universal/debug/"
else
    echo ""
    if [ "$FORMAT" = "apk" ]; then
        echo "=== Building Android release APK ==="
        cargo tauri android build --target aarch64 -- --apk
    else
        echo "=== Building Android release AAB ==="
        cargo tauri android build --target aarch64 -- --aab
    fi

    echo ""
    echo "Release $FORMAT built. Look for output in:"
    if [ "$FORMAT" = "apk" ]; then
        echo "  src-tauri/gen/android/app/build/outputs/apk/universal/release/"
    else
        echo "  src-tauri/gen/android/app/build/outputs/bundle/universalRelease/"
    fi
fi

echo ""
echo "Done. GoingsOn Android v$VERSION ($FORMAT)"
