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

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

if [[ ! -x ./gradlew ]]; then
  echo "ERROR: gradlew missing or not executable" >&2
  exit 1
fi

# Camera 90 requirements from the upstream source:
# compileSdk 36 / build-tools 36.0.0 / CameraX 1.5.0.
#
# Use ANDROID_HOME / ANDROID_SDK_ROOT or local.properties. We deliberately do not
# rewrite CameraX or compile the Camera source with Soong.
if [[ ! -f local.properties && -z "${ANDROID_HOME:-}" && -z "${ANDROID_SDK_ROOT:-}" ]]; then
  echo "ERROR: Android SDK 36 is not configured." >&2
  echo "Set ANDROID_HOME/ANDROID_SDK_ROOT or create local.properties with sdk.dir=..." >&2
  exit 1
fi

./gradlew --no-daemon clean :app:assembleRelease

APK="app/build/outputs/apk/release/app-release-unsigned.apk"
if [[ ! -f "$APK" ]]; then
  APK="app/build/outputs/apk/release/app-release.apk"
fi
if [[ ! -f "$APK" ]]; then
  echo "ERROR: release APK not found after Gradle build" >&2
  find app/build/outputs/apk -maxdepth 3 -type f -name '*.apk' -print 2>/dev/null || true
  exit 1
fi

mkdir -p prebuilt
cp -f "$APK" prebuilt/LemenzoCamera.apk

# Locate AOSP root without git assumptions, solely for aapt2 verification.
SEARCH="$ROOT"
TOP=""
while [[ "$SEARCH" != "/" ]]; do
  if [[ -f "$SEARCH/build/envsetup.sh" ]]; then
    TOP="$SEARCH"
    break
  fi
  SEARCH="$(dirname "$SEARCH")"
done

AAPT2="${AAPT2:-}"
if [[ -z "$AAPT2" && -n "$TOP" && -x "$TOP/out/host/linux-x86/bin/aapt2" ]]; then
  AAPT2="$TOP/out/host/linux-x86/bin/aapt2"
fi

if [[ -n "$AAPT2" && -x "$AAPT2" ]]; then
  PKG="$("$AAPT2" dump badging prebuilt/LemenzoCamera.apk | sed -n "s/^package: name='\([^']*\)'.*/\1/p" | head -1)"
  if [[ "$PKG" != "com.lemenzo.camera" ]]; then
    echo "ERROR: APK package is '$PKG', expected com.lemenzo.camera" >&2
    exit 1
  fi
  echo "Verified package: $PKG"
fi

sha256sum prebuilt/LemenzoCamera.apk
printf '\nREADY: %s\n' "$ROOT/prebuilt/LemenzoCamera.apk"
