name: Development build

on:
  push:
    branches:
      - main
      - develop/*

defaults:
  run:
    shell: bash

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

env:
  BRANCH_NAME: ${{ github.ref_name }}
  GRADLE_OPTS: "-Dorg.gradle.jvmargs='-Xmx4g -XX:MaxMetaspaceSize=512m'"

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Checkout the code
        uses: actions/checkout@v5
        with:
          fetch-depth: 0 # Need the tags to build
      - name: Setup
        uses: ./.github/actions/setup
      - name: Native build
        uses: ./.github/actions/native-build
        with:
          cache: true

      - name: Get version names
        run: |
          LATEST_TAG=$(git describe --tags --match 'v*' --abbrev=0)
          VERSION_NAME=$(git describe --tags --match 'v*' --long)
          if [[ $BRANCH_NAME == "main" ]]; then
            TAG_NAME="develop"
          else
            TAG_NAME="${BRANCH_NAME/\//-}"
          fi

          echo "LATEST_TAG=$LATEST_TAG" >> "$GITHUB_ENV"
          echo "VERSION_NAME=$VERSION_NAME" >> "$GITHUB_ENV"
          echo "TAG_NAME=$TAG_NAME" >> "$GITHUB_ENV"
      - name: Build release app
        id: build
        env:
          KEY_ALIAS: "${{ secrets.KEY_ALIAS }}"
          KEY_PASSWORD: "${{ secrets.KEY_PASSWORD }}"
          KEY_STORE_PASSWORD: "${{ secrets.KEY_STORE_PASSWORD }}"
          SIGNING_KEY: "${{ secrets.SIGNING_KEY }}"
        run: |
          ./gradlew clean assembleRelease assembleDebug --no-daemon
      - name: Verify signatures
        run: |
          echo "Verify APK signatures"
          find app/build/outputs/apk -name '*.apk'
          find app/build/outputs/apk -name '*.apk' -print0 | xargs -t -0 -n1 ${{env.ANDROID_SDK_ROOT}}/build-tools/${{ env.BUILD_TOOLS_VERSION }}/apksigner verify --verbose --print-certs
      - name: Copy APK to shorter names
        id: apks
        run: |
          find app/build/outputs/apk -name '*.apk' -print0 |
            while IFS= read -r -d '' line; do
              # Wholphin-release-0.2.9-62-g5c12e03-16-arm64-v8a.apk => Wholphin-arm64-v8a.apk
              short_name="$(echo $line | sed -E 's/-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-g[a-fA-F0-9]+-[0-9]+//')"
              echo "$line => $short_name"
              cp "$line" "$short_name"
            done
          apks=$(find app/build/outputs/apk -name '*.apk' -print0 | tr '\0' ',' | sed 's/,$//')
          echo "apks=$apks" >> "$GITHUB_OUTPUT"
      - name: Checksums
        run: |
          echo "SHA256 checksums:"
          find app/build/outputs/apk -name '*.apk' -print0 | xargs -0 sha256sum
      - name: Delete ${{ env.TAG_NAME }} tag and release
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh release delete "${{ env.TAG_NAME }}" --cleanup-tag -y || true


          echo '### `${{ env.BRANCH_NAME }}` development build

          This pre-release tracks the development build of Wholphin from the `${{ env.BRANCH_NAME }}` unstable branch.

          See https://github.com/damontecres/Wholphin/releases/latest for the latest stable release.

          If you want to update to this version in-app, change Settings->Advanced->Update URL to https://api.github.com/repos/damontecres/Wholphin/releases/tags/${{ env.TAG_NAME }} (replace `latest` with `tags/${{ env.TAG_NAME }}`).

          [See changes since `${{ env.LATEST_TAG }}`](https://github.com/damontecres/Wholphin/compare/${{ env.LATEST_TAG }}...${{ env.TAG_NAME }})' > ci_release_note.txt


           gh release create "${{ env.TAG_NAME }}" \
            --latest=false --prerelease --title "${{ env.VERSION_NAME }}" --target "${{ env.BRANCH_NAME }}" -F ci_release_note.txt \
            "app/build/outputs/apk/**/*.apk"
