Auto-format code changes (#640) #330
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Clang-Format | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
format: | |
name: Run Clang-Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Clang-Format | |
run: sudo apt-get update && sudo apt-get install clang-format && clang-format --version | |
- name: Check out code, run clang format, push changes | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.head_ref }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Format code | |
run: | | |
find include -type f \( -name '*.hpp' -o -name '*.h' -o -name '*.cuh' -o -name '*.inl' \) -exec clang-format -i --style=file --verbose {} + | |
find src -type f \( -name '*.cu' -o -name '*.hpp' -o -name '*.h' -o -name '*.cpp' \) -exec clang-format -i --style=file --verbose {} + | |
find test -type f \( -name '*.hpp' -o -name '*.h' -o -name '*.cpp' -o -name '*.cuh' -o -name '*.cu' \) ! -path 'test/tutorial/*' -exec clang-format -i --style=file --verbose {} + | |
- name: Check for changes | |
id: check-changes | |
run: | | |
git diff --exit-code | |
continue-on-error: true | |
- name: Commit and push changes | |
# a failue of this step means changes were detected | |
if: steps.check-changes.outcome != 'success' | |
run: | | |
git config --global user.name "GitHub Actions" | |
git config --global user.email "actions@github.com" | |
git commit -am "Auto-format code using Clang-Format" || echo "No changes to commit" | |
- name: Push changes to main-formatting branch | |
# a failue of this step means changes were detected | |
if: steps.check-changes.outcome != 'success' | |
run: | | |
git push origin HEAD:main-formatting | |
- name: Create Pull Request | |
# a failue of this step means changes were detected | |
if: steps.check-changes.outcome != 'success' | |
uses: peter-evans/create-pull-request@v3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: "Auto-format code using Clang-Format" | |
title: "Auto-format code changes" | |
body: "This is an automated pull request to apply code formatting using Clang-Format." | |
branch: "main-formatting" |