name: clang-format on: push: pull_request: types: [opened, reopened, synchronize, ready_for_review] jobs: check: if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }} runs-on: ubuntu-24.04 container: ghcr.io/xrplf/ci/tools-rippled-clang-format steps: # For jobs running in containers, $GITHUB_WORKSPACE and ${{ github.workspace }} might not be the # same directory. The actions/checkout step is *supposed* to checkout into $GITHUB_WORKSPACE and # then add it to safe.directory (see instructions at https://github.com/actions/checkout) # but that's apparently not happening for some container images. We can't be sure what is actually # happening, so let's pre-emptively add both directories to safe.directory. There's a # Github issue opened in 2022 and not resolved in 2025 https://github.com/actions/runner/issues/2058 ¯\_(ツ)_/¯ - run: | git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory ${{ github.workspace }} - uses: actions/checkout@v4 - name: Format first-party sources run: | clang-format --version find include src tests -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' -o -name '*.ipp' \) -exec clang-format -i {} + - name: Check for differences id: assert shell: bash run: | set -o pipefail git diff --exit-code | tee "clang-format.patch" - name: Upload patch if: failure() && steps.assert.outcome == 'failure' uses: actions/upload-artifact@v4 continue-on-error: true with: name: clang-format.patch if-no-files-found: ignore path: clang-format.patch - name: What happened? if: failure() && steps.assert.outcome == 'failure' env: PREAMBLE: | If you are reading this, you are looking at a failed Github Actions job. That means you pushed one or more files that did not conform to the formatting specified in .clang-format. That may be because you neglected to run 'git clang-format' or 'clang-format' before committing, or that your version of clang-format has an incompatibility with the one on this machine, which is: SUGGESTION: | 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 'git-clang-format --extensions cpp,h,hpp,ipp develop' in your repo, commit, and push. run: | echo "${PREAMBLE}" clang-format --version echo "${SUGGESTION}" exit 1