name: CI

on: [ push, pull_request ]

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      JVM_OPTS: -Xmx6G

    steps:
      - name: Git Checkout
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - name: Restore Gradle Cache
        uses: actions/cache@v2
        with:
          path: /root/.gradle/
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/build.gradle') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Restore CXX Cache
        uses: actions/cache@v2
        with:
          path: app/.cxx/
          key: ${{ runner.os }}-cxx-${{ hashFiles('**/CMakeLists.txt') }}
          restore-keys: |
            ${{ runner.os }}-cxx-

      - name: Install Ninja Build
        run: |
          sudo apt-get install -y ninja-build
          ln -s /usr/bin/ninja .

      - name: Install CMake & Android NDK
        run: echo "yes" | $ANDROID_HOME/tools/bin/sdkmanager "cmake;3.18.1" "ndk;24.0.7856742" --channel=3 | grep -v = || true

      - name: Android Lint
        run: |
          chmod +x gradlew
          ./gradlew --stacktrace lint

      - name: Upload Lint Report
        uses: actions/upload-artifact@v2
        with:
          name: lint-result.html
          path: app/build/reports/lint-results-debug.html

      - name: Android Assemble
        run: ./gradlew --stacktrace assemble

      - name: Upload Debug APK
        uses: actions/upload-artifact@v2
        with:
          name: app-debug.apk
          path: app/build/outputs/apk/debug/

      - name: Upload Release APK
        uses: actions/upload-artifact@v2
        with:
          name: app-release.apk
          path: app/build/outputs/apk/release/

      - name: Upload R8 Mapping
        uses: actions/upload-artifact@v2
        with:
          name: mapping.txt
          path: app/build/outputs/mapping/release/

      - name: Delete Build Folder
        run: rm -rf app/build/
