# Build the Android APK on push to the master branch
name: Build Release APK
on:
  push:
    tags:
      - "v*"
      - "!v*-test"

env:
  GODOT_VERSION: 4.2
  EXPORT_NAME: immersive-home
  GODOT_ANDROID_KEYSTORE_RELEASE_PATH: /home/runner/work/Immersive-Home/Immersive-Home/release.keystore
  GODOT_ANDROID_KEYSTORE_RELEASE_USER: ${{ secrets.RELEASE_USER }}
  GODOT_ANDROID_KEYSTORE_RELEASE_PASSWORD: ${{ secrets.RELEASE_PASSWORD }}

jobs:
  # job id, can be anything
  export_game:
    # Always use ubuntu-latest for this action
    runs-on: ubuntu-latest
    # Add permission for release creation. Can be made narrower according to your needs
    permissions: write-all
    # Job name, can be anything
    name: Export Game
    steps:
      # Always include the checkout step so that
      # your project is available for Godot to export
      - name: checkout
        uses: actions/checkout@v3.3.0
        with:
          lfs: true
          fetch-depth: 0

      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: "17"
          distribution: "temurin"

      - name: Setup Android SDK
        uses: android-actions/setup-android@v3

      - name: Setup Android Export
        run: |
          sdkmanager "build-tools;32.0.0"

          echo "${{ secrets.KEYSTORE_RELEASE }}" | base64 -di > release.keystore

          mkdir -p ./android/build
          touch ./android/build/.gdignore

          wget -nv https://downloads.tuxfamily.org/godotengine/4.1.3/Godot_v4.1.3-stable_export_templates.tpz -O ./godot_templates.tpz
          unzip -q ./godot_templates.tpz -d .
          rm ./godot_templates.tpz
          unzip -q ./templates/android_source.zip -d ./android/build/
          rm ./templates/android_source.zip

          sed -i 's/singleInstancePerTask/singleTask/g' ./android/build/AndroidManifest.xml

          versioncode=$(eval "cat export_presets.cfg | grep version/code | tail -1 | cut -d'=' -f2")
          sed -i "s/android:versionCode=\"1\"/android:versionCode=\"$versioncode\"/g" ./android/build/AndroidManifest.xml
          sed -i "s/android:versionName=\"1.0\"/android:versionName=\"${{ github.ref_name }}\"/g" ./android/build/AndroidManifest.xml

      - name: export game
        id: export
        # Use latest version (see releases for all versions)
        uses: nitwel/godot-export@latest
        with:
          # Defining all the required inputs
          godot_executable_download_url: https://downloads.tuxfamily.org/godotengine/4.2/Godot_v4.2-stable_linux.x86_64.zip
          godot_export_templates_download_url: https://downloads.tuxfamily.org/godotengine/4.2/Godot_v4.2-stable_export_templates.tpz
          relative_project_path: ./
          archive_output: true
          filter_exports: "AndroidProduction"

      - name: create release
        uses: ncipollo/release-action@v1.11.2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          generateReleaseNotes: true
          artifacts: ${{ steps.export.outputs.archive_directory }}/* # Added "/*" at the end is glob pattern match for this action
