name: Publish Custom App

on:
  release:
    types: [published]
    branches:
      - main

jobs:
  publish:
    runs-on: ubuntu-22.04

    steps:
      - name: Retrieving custom app configuration
        uses: actions/checkout@v3

      - name: Retrieving Kiwix Android source code
        run: git clone --depth=1 --single-branch --branch main https://github.com/kiwix/kiwix-android.git

      - name: Copying custom app configuration into Kiwix Android code base
        run: ./copy_files_to_kiwix_android.sh

      - name: Preparing signing material
        env:
          keystore: ${{ secrets.keystore }}
          playstore_json: ${{ secrets.PLAYSTORE_JSON }}
        run: |
          echo "$playstore_json" > kiwix-android/playstore.json
          echo "$keystore" | base64 -d > kiwix-android/kiwix-android.keystore
      - name: Set tag variable
        run: echo "TAG=$(echo ${GITHUB_REF:10})" >> $GITHUB_ENV

      - name: Publishing app to Google Play
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
          DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION: ${{ secrets.DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION }}
        run: |
          cd kiwix-android
          eval "./gradlew publish${TAG^}ReleaseBundleWithPlayAssetDelivery"

  publish_dummy_bundle:
    runs-on: ubuntu-22.04

    steps:
      - name: Retrieving custom app configuration
        uses: actions/checkout@v3

      - name: Retrieving Kiwix Android source code
        run: git clone --depth=1 --single-branch --branch main https://github.com/kiwix/kiwix-android.git

      - name: Copying custom app configuration into Kiwix Android code base
        run: ./copy_files_to_kiwix_android.sh

      - name: Install jq
        run: sudo apt-get install -y jq

      - name: Set tag variable
        run: echo "TAG=$(echo ${GITHUB_REF:10})" >> $GITHUB_ENV

      - name: Should upload dummy Bundle
        run: |
          cd ${TAG}
          should_publish=$(jq -r '.new // empty' info.json)
          if [ "$should_publish" == 'true' ]; then
            echo "should_publish=true" >> $GITHUB_ENV
          else
            echo "should_publish=false" >> $GITHUB_ENV
          fi

      - name: Preparing signing material
        if: env.should_publish == 'true'
        env:
          keystore: ${{ secrets.keystore }}
        run: |
          echo "$keystore" | base64 -d > kiwix-android/kiwix-android.keystore

      - name: Generate dummy Bundle
        if: env.should_publish == 'true'
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
          DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION: ${{ secrets.DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION }}
        run: |
          cd kiwix-android
          eval "./gradlew bundle${TAG^}Release"


      - name: Get Bundle name and path
        if: env.should_publish == 'true'
        id: bundle-path
        run: |
          BUNDLE_PATH="kiwix-android/custom/build/outputs/bundle/${TAG}Release/*${TAG}*.aab"
          BUNDLE_NAME="${TAG^}DummyBundle.aab"
          echo "bundle_path=$BUNDLE_PATH" >> $GITHUB_ENV
          echo "bundle_name=$BUNDLE_NAME" >> $GITHUB_ENV

      - name: Upload Bundle as an artifact
        if: env.should_publish == 'true'
        uses: actions/upload-artifact@v2
        with:
          name: ${{ env.bundle_name }}
          path: ${{ env.bundle_path }}

