--- /dev/null
+name: Trailing Whitespace Check
+
+on:
+ pull_request:
+ types: [ opened, reopened, synchronize, ready_for_review ]
+
+jobs:
+ build:
+ name: Trailing Whitespace Check
+ if: github.event.pull_request.draft == false
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4.2.2
+ - name: Get changed text files
+ id: changed-files
+ uses: tj-actions/changed-files@v46.0.5
+ with:
+ files: |
+ **.cs
+ **.yml
+ **.swsl
+ **.json
+ **.py
+ - name: Check for trailing whitespace and EOF newline
+ env:
+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
+ run: |
+ has_trailing_whitespace=0
+ has_missing_eof_newline=0
+
+ for file in ${ALL_CHANGED_FILES}; do
+ echo "Checking $file"
+
+ # Check for trailing whitespace
+ if grep -qP '[ \t]+$' "$file"; then
+ echo "::error file=$file::Trailing whitespace found"
+ has_trailing_whitespace=1
+ fi
+
+ # Check for missing EOF newline
+ if [ -f "$file" ] && [ -s "$file" ]; then
+ last_char=$(tail -c 1 "$file")
+ if [ "$last_char" != "" ] && [ "$last_char" != $'\n' ]; then
+ echo "::error file=$file::Missing newline at end of file"
+ has_missing_eof_newline=1
+ fi
+ fi
+ done
+
+ if [ "$has_trailing_whitespace" -eq 1 ] || [ "$has_missing_eof_newline" -eq 1 ]; then
+ echo "Issues found: trailing whitespace or missing EOF newline."
+ echo "We recommend using an IDE to prevent this from happening."
+ exit 1
+ fi