name: Build Debug APK

on:
  push:
    branches:
      - 'main'
    paths-ignore:
      - '**.md'
      - '**.yml'
      - '**.xml'
  pull_request_review:
    paths-ignore:
      - '**.md'
    types: submitted
  workflow_dispatch:

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

jobs:
  build:

    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
    - name: Check out repository
      uses: actions/checkout@v4
      with:
        submodules: true

    - name: Validate Gradle Wrapper
      uses: gradle/actions/setup-gradle@v4

    - name: Setup Gradle
      uses: gradle/wrapper-validation-action@v3

    - name: Set up Java 17
      uses: actions/setup-java@v4
      with:
        java-version: 17
        distribution: 'adopt'
        cache: gradle

    - name: Grant execution permission to Gradle Wrapper
      run: chmod +x gradlew

    - name: Format Code
      run: ./gradlew ktlintFormat

    - name: Build Debug APK
      run: ./gradlew assembleDebug

    - name: Sign Apk
      continue-on-error: true
      id: sign_apk
      uses: r0adkll/sign-android-release@v1
      with:
        releaseDir: app/build/outputs/apk/debug
        signingKeyBase64: ${{ secrets.KEY_BASE64 }}
        alias: ${{ secrets.KEY_ALIAS }}
        keyStorePassword: ${{ secrets.KEYSTORE_PASS }}
        keyPassword: ${{ secrets.KEYSTORE_PASS }}

    - name: Remove file that aren't signed
      continue-on-error: true
      run: |
        ls | grep 'signed\.apk$' && find . -type f -name '*.apk' ! -name '*-signed.apk' -delete

    - name: Upload the APK
      uses: actions/upload-artifact@v4
      with:
        name: debug
        path: app/build/outputs/apk/debug/app-debug*.apk
