name: Check for Windows Line Endings on: pull_request: branches: ['*'] # Trigger on all pull requests to any branch jobs: check-line-endings: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 # Fetch all history to compare changes - name: Check for Windows line endings (CRLF) run: | # Get the list of changed files in the PR CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}) # Flag to track if CRLF is found CRLF_FOUND=false # Loop through each changed file for FILE in $CHANGED_FILES; do # Check if the file exists and is a text file if [ -f "$FILE" ] && file "$FILE" | grep -q "text"; then # Check for CRLF line endings if grep -UP '\r$' "$FILE"; then echo "Error: Windows line endings (CRLF) detected in $FILE" CRLF_FOUND=true fi fi done # Exit with error if CRLF was found if [ "$CRLF_FOUND" = true ]; then exit 1 fi