name: Create Release Assets

on:
  push:
    tags:
    - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up JDK 17
        uses: actions/setup-java@v1
        with:
          java-version: 17

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

      - name: Build AAB
        run: ./gradlew clean bundleRelease --stacktrace

      - name: Sign AAB (Google Play)
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/bundle/playRelease
          signingKeyBase64: ${{ secrets.SIGNING_KEY }}
          alias: ${{ secrets.KEY_ALIAS }}
          keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}

      - name: Sign AAB (F-Droid)
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/bundle/fdroidRelease
          signingKeyBase64: ${{ secrets.SIGNING_KEY }}
          alias: ${{ secrets.KEY_ALIAS }}
          keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}

      - name: Build APK
        run: ./gradlew assembleRelease --stacktrace --no-daemon

      - name: Sign APK (Google Play)
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/apk/play/release
          signingKeyBase64: ${{ secrets.SIGNING_KEY }}
          alias: ${{ secrets.KEY_ALIAS }}
          keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}

      - name: Sign APK (F-Droid)
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/apk/fdroid/release
          signingKeyBase64: ${{ secrets.SIGNING_KEY }}
          alias: ${{ secrets.KEY_ALIAS }}
          keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false

      # Google Play APK
      - name: Upload Play APK Universal Asset
        id: upload-release-asset-play-universal-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} 
          asset_path: app/build/outputs/apk/play/release/app-play-universal-release-unsigned-signed.apk
          asset_name: amethyst-googleplay-universal-${{ github.ref_name }}.apk
          asset_content_type: application/zip

      - name: Upload Play APK x86 Asset
        id: upload-release-asset-play-x86-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/play/release/app-play-x86-release-unsigned-signed.apk
          asset_name: amethyst-googleplay-x86-${{ github.ref_name }}.apk
          asset_content_type: application/zip

      - name: Upload Play APK x86_64 Asset
        id: upload-release-asset-play-x86-64-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/play/release/app-play-x86_64-release-unsigned-signed.apk
          asset_name: amethyst-googleplay-x86_64-${{ github.ref_name }}.apk
          asset_content_type: application/zip

      # F-Droid APK
      - name: Upload F-Droid APK Universal Asset
        id: upload-release-asset-fdroid-universal-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-universal-release-unsigned-signed.apk
          asset_name: amethyst-fdroid-universal-${{ github.ref_name }}.apk
          asset_content_type: application/zip

      - name: Upload F-Droid APK x86 Asset
        id: upload-release-asset-fdroid-x86-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-x86-release-unsigned-signed.apk
          asset_name: amethyst-fdroid-x86-${{ github.ref_name }}.apk
          asset_content_type: application/zip

      - name: Upload F-Droid APK x86_64 Asset
        id: upload-release-asset-fdroid-x86-64-apk
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-x86_64-release-unsigned-signed.apk
          asset_name: amethyst-fdroid-x86_64-${{ github.ref_name }}.apk
          asset_content_type: application/zip



      # Google Play AAB
      - name: Upload Google Play AAB Asset
        id: upload-release-asset-play-aab
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/bundle/playRelease/app-play-release.aab
          asset_name: amethyst-googleplay-${{ github.ref_name }}.aab
          asset_content_type: application/zip

      # FDroid AAB
      - name: Upload F-Droid AAB Asset
        id: upload-release-asset-fdroid-aab
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/bundle/fdroidRelease/app-fdroid-release.aab
          asset_name: amethyst-fdroid-${{ github.ref_name }}.aab
          asset_content_type: application/zip