name: Flutter CI

# This workflow is triggered on pushes to the repository.
on:
  workflow_dispatch:
    # Enable manual run
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v4.2.0

jobs:
  build:
    # This job will run on ubuntu virtual machine
    runs-on: ubuntu-latest
    steps:

      # Setup Java environment in order to build the Android app.
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '11'

      # Setup the flutter environment.
      - uses: subosito/flutter-action@v2
        with:
          channel: 'stable'
          flutter-version: '3.3.2'

      # Fetch sub modules
      - run: git submodule update --init --recursive

      # Get flutter dependencies.
      - run: flutter pub get

      - name: Setup keys
        uses: timheuer/base64-to-file@v1
        with:
          fileName: 'keystore/ente_auth_key.jks'
          encodedString: ${{ secrets.SIGNING_KEY }}

      # Build independent apk.
      - name: Build
        run: flutter build apk --release --flavor independent && mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-auth.apk
        env:
          SIGNING_KEY_PATH: '/home/runner/work/_temp/keystore/ente_auth_key.jks'
          SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
          SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
          SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}

      - name: Checksum
        run: sha256sum build/app/outputs/flutter-apk/ente-auth.apk > build/app/outputs/flutter-apk/sha256sum

      # Upload generated apk to the artifacts.
      - uses: actions/upload-artifact@v2
        with:
          name: release-apk
          path: build/app/outputs/flutter-apk/ente-auth.apk

      - uses: actions/upload-artifact@v2
        with:
          name: release-checksum
          path: build/app/outputs/flutter-apk/checksum

      # Create a Github release
      - uses: ncipollo/release-action@v1
        with:
          artifacts: "build/app/outputs/flutter-apk/ente-auth.apk,build/app/outputs/flutter-apk/sha256sum"
          token: ${{ secrets.GITHUB_TOKEN }}
