name: "Lint Check" description: "Checks for lint errors and posts a helpful comment" runs: using: "composite" steps: - name: Install Dependencies run: pipx install --global clang-format==20.1.0 shell: bash - name: Run format command run: find src/ -regex '.*\.\(cpp\|hpp\|cc\|cxx\|h\|c\|m\|mm\)' -exec clang-format -i {} \; shell: bash - name: Find changes id: changes run: | file=clang-format.diff diff=$(git diff | tee $file) if [ -z "$diff" ]; then echo "No changes detected" exit 0 fi echo "file=$file" >> $GITHUB_OUTPUT { echo "diff<> $GITHUB_OUTPUT shell: bash - name: Upload to GitHub id: upload if: steps.changes.outputs.diff uses: actions/upload-artifact@v4 with: name: clang-format-diff path: ${{ steps.changes.outputs.file }} if-no-files-found: error - name: Set summary id: summary if: steps.changes.outputs.diff run: | code_block="\`\`\`" summary=$(cat<> $GITHUB_STEP_SUMMARY file="ci_summary.md" echo "❌🛠️ \`clang-format\`: Lint errors, fix available." >> $file echo "file=$file" >> $GITHUB_OUTPUT shell: bash - name: Upload CI summary as artifact if: steps.summary.outputs.file uses: actions/upload-artifact@v4 with: name: summary-clang-format path: ${{ steps.summary.outputs.file }} if-no-files-found: error - name: Fail if diff exists if: steps.changes.outputs.diff run: exit 1 shell: bash