80 lines
2.1 KiB
YAML
80 lines
2.1 KiB
YAML
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
|
|
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<<EOF"
|
|
cat $file
|
|
echo "EOF"
|
|
} >> $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<<EOF
|
|
❌ \`clang-format\`: It looks like your changes don't match our code style.
|
|
|
|
🛠️ Please either run \`clang-format -i\` on the file or apply this patch with \`git apply\`:
|
|
|
|
[\`${{ steps.changes.outputs.file }}\`](${{ steps.upload.outputs.artifact-url }})
|
|
$code_block diff
|
|
${{ steps.changes.outputs.diff }}
|
|
$code_block
|
|
EOF
|
|
)
|
|
echo "$summary" >> $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
|