name: Build

on: [push, pull_request]

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Set up Java 8
      uses: actions/setup-java@v1
      with:
        java-version: 8

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

    - name: Disable Gradle daemon
      run: |
        mkdir -p ~/.gradle
        echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties

    - name: Build with Gradle
      run: |
        ./gradlew assemble || ./gradlew assemble
        ./gradlew downloadAssets || ./gradlew downloadAssets
        ./gradlew build

    - name: Upload Jar
      uses: actions/upload-artifact@v2
      with:
        name: CC-Tweaked
        path: build/libs

    - name: Upload Coverage
      uses: codecov/codecov-action@v1

    - name: Parse test reports
      run: ./tools/parse-reports.py
      if: ${{ failure() }}

    - name: Cache pre-commit
      uses: actions/cache@v2
      with:
        path: ~/.cache/pre-commit
        key: ${{ runner.os }}-pre-commit-${{ hashFiles('config/pre-commit/config.yml') }}
        restore-keys: |
          ${{ runner.os }}-pre-commit-

    - name: Run linters
      run: |
        pip install pre-commit
        pre-commit run --config config/pre-commit/config.yml --show-diff-on-failure --all --color=always
