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@v4
        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
