name: levelization

on: [push, pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    env:
      CLANG_VERSION: 10
    steps:
    - uses: actions/checkout@v4
    - name: Check levelization
      run: Builds/levelization/levelization.sh
    - name: Check for differences
      id: assert
      run: |
        set -o pipefail
        git diff --exit-code | tee "levelization.patch"
    - name: Upload patch
      if: failure() && steps.assert.outcome == 'failure'
      uses: actions/upload-artifact@v3
      continue-on-error: true
      with:
        name: levelization.patch
        if-no-files-found: ignore
        path: levelization.patch
    - name: What happened?
      if: failure() && steps.assert.outcome == 'failure'
      env:
        MESSAGE: |
          If you are reading this, you are looking at a failed Github
          Actions job. That means you changed the dependency relationships
          between the modules in rippled. That may be an improvement or a
          regression. This check doesn't judge.

          A rule of thumb, though, is that if your changes caused
          something to be removed from loops.txt, that's probably an
          improvement. If something was added, it's probably a regression.

          To fix it, you can do one of two things:
          1. Download and apply the patch generated as an artifact of this
             job to your repo, commit, and push.
          2. Run './Builds/levelization/levelization.sh' in your repo,
             commit, and push.

          See Builds/levelization/README.md for more info.
      run: |
        echo "${MESSAGE}"
        exit 1
