name: Build Android

permissions:
  contents: read

on:
  push:
    branches:
      - main
    paths:
      - '.github/workflows/android-build.yml'
      - 'example/android/**'
      - 'nitrogen/generated/shared/**'
      - 'nitrogen/generated/android/**'
      - 'cpp/**'
      - 'android/**'
      - '**/bun.lock'
      - '**/react-native.config.js'
      - '**/nitro.json'
  pull_request:
    paths:
      - '.github/workflows/android-build.yml'
      - 'example/android/**'
      - '**/nitrogen/generated/shared/**'
      - '**/nitrogen/generated/android/**'
      - 'cpp/**'
      - 'android/**'
      - '**/bun.lock'
      - '**/react-native.config.js'
      - '**/nitro.json'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    name: Build Android Example App
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v2

      - name: Install dependencies (bun)
        run: bun install

      - name: Setup JDK 17
        uses: actions/setup-java@v5
        with:
          distribution: 'zulu'
          java-version: '17'
          cache: 'gradle'

      - name: Cache Gradle
        uses: actions/cache@v4
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('example/android/**/*.gradle*') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Run Gradle build
        working-directory: example/android
        run: ./gradlew assembleDebug --no-daemon --build-cache

      - name: Stop Gradle daemon
        working-directory: example/android
        run: ./gradlew --stop
