name: PR build check

on:
  pull_request:

jobs:
  check_wrapper:
    name: Validate Gradle Wrapper
    runs-on: ubuntu-latest
    steps:
      - name: Clone repo
        uses: actions/checkout@v2

      - name: Validate Gradle Wrapper
        uses: gradle/wrapper-validation-action@v1

  build_multisrc:
    name: Build multisrc modules
    needs: check_wrapper
    runs-on: ubuntu-latest
    strategy:
      matrix:
        lang: [all, en, ar, ca, de, es, fr, id, it, ja, ko, pt, ru, th, tr, vi, zh, bg, hi, pl]
    steps:
      - name: Checkout PR
        uses: actions/checkout@v2

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

      - name: Copy CI gradle.properties
        run: |
          mkdir -p ~/.gradle
          cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Generate sources from the multi-source library
        uses: eskatos/gradle-command-action@v1
        env:
          CI_MULTISRC: "true"
        with:
          arguments: :multisrc:generateExtensions
          wrapper-cache-enabled: true
          dependencies-cache-enabled: true
          configuration-cache-enabled: true

      - name: Build "${{ matrix.lang }}" extensions
        uses: eskatos/gradle-command-action@v1
        env:
          CI_MULTISRC: "true"
          CI_MATRIX_LANG: ${{ matrix.lang }}
        with:
          arguments: assembleRelease
          wrapper-cache-enabled: true
          dependencies-cache-enabled: true
          configuration-cache-enabled: true

  build_individual:
    name: Build individual modules
    needs: check_wrapper
    runs-on: ubuntu-latest
    strategy:
      matrix:
        lang: [all, en, ar, ca, de, es, fr, id, it, ja, ko, pt, ru, th, tr, vi, zh, bg, hi, pl]
    steps:
      - name: Checkout PR
        uses: actions/checkout@v2

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

      - name: Copy CI gradle.properties
        run: |
          mkdir -p ~/.gradle
          cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Build "${{ matrix.lang }}" extensions
        uses: eskatos/gradle-command-action@v1
        env:
          CI_MULTISRC: "false"
          CI_MATRIX_LANG: ${{ matrix.lang }}
        with:
          arguments: assembleRelease
          wrapper-cache-enabled: true
          dependencies-cache-enabled: true
          configuration-cache-enabled: true