# Inspired by LLVM's pr-code-format.yml at # https://github.com/llvm/llvm-project/blob/main/.github/workflows/pr-code-format.yml name: "Check code formatting" on: pull_request: branches: - main jobs: code_formatter: runs-on: [self-hosted, X64] if: github.repository == 'FEX-Emu/FEX' steps: - name: Fetch FEX sources uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: Checkout through merge base uses: rmacklin/fetch-through-merge-base@v0 timeout-minutes: 3 with: base_ref: ${{ github.event.pull_request.base.ref }} head_ref: ${{ github.event.pull_request.head.sha }} deepen_length: 500 - name: Get changed files id: changed-files uses: tj-actions/changed-files@v39 with: separator: "," skip_initial_fetch: true - name: "Listed files" env: CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} run: | echo "Formatting files:" echo "$CHANGED_FILES" - name: Check for correct clang-format version run: clang-format --version | grep -qF '16.0.6' - name: Check git-clang-format-16 exists run: which git-clang-format-16 - name: Setup Python env uses: actions/setup-python@v4 with: python-version: '3.11' cache: 'pip' cache-dependency-path: './External/code-format-helper/requirements_formatting.txt' - name: Install python dependencies run: pip install -r ./External/code-format-helper/requirements_formatting.txt - name: Run code formatter env: CLANG_FORMAT_PATH: 'git-clang-format-16' GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }} START_REV: ${{ github.event.pull_request.base.sha }} END_REV: ${{ github.event.pull_request.head.sha }} CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} # TODO(pmatos): Once we adopt v18, we should be able # to take advantage of the new --diff_from_common_commit option # explicitly in code-format-helper.py and not have to diff starting at # the merge base. run: | python ./External/code-format-helper/code-format-helper.py \ --repo "FEX-emu/FEX" \ --issue-number $GITHUB_PR_NUMBER \ --start-rev $(git merge-base $START_REV $END_REV) \ --end-rev $END_REV \ --changed-files "$CHANGED_FILES"