# SPDX-License-Identifier: PMPL-1.0-or-later
name: Code Quality
on: [push, pull_request]


permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      
      - name: Check file permissions
        run: |
          find . -type f -perm /111 -name "*.sh" | head -10 || true
      
      - name: Check for secrets
        uses: trufflesecurity/trufflehog@6c05c4a00b91aa542267d8e32a8254774799d68d # v3.93.3
        with:
          path: ./
          base: ${{ github.event.pull_request.base.sha || github.event.before }}
          head: ${{ github.sha }}
        continue-on-error: true
      
      - name: Check TODO/FIXME
        run: |
          echo "=== TODOs ==="
          grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.rs" --include="*.res" --include="*.py" --include="*.ex" . | head -20 || echo "None found"
      
      - name: Check for large files
        run: |
          find . -type f -size +1M -not -path "./.git/*" | head -10 || echo "No large files"
      
      - name: EditorConfig check
        uses: editorconfig-checker/action-editorconfig-checker@4b6cd6190d435e7e084fb35e36a096e98506f7b9 # v2.1.0
        continue-on-error: true

  docs:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: Check documentation
        run: |
          MISSING=""
          [ ! -f "README.md" ] && [ ! -f "README.adoc" ] && MISSING="$MISSING README"
          [ ! -f "LICENSE" ] && [ ! -f "LICENSE.txt" ] && [ ! -f "LICENSE.md" ] && MISSING="$MISSING LICENSE"
          [ ! -f "CONTRIBUTING.md" ] && [ ! -f "CONTRIBUTING.adoc" ] && MISSING="$MISSING CONTRIBUTING"
          
          if [ -n "$MISSING" ]; then
            echo "::warning::Missing docs:$MISSING"
          else
            echo "✅ Core documentation present"
          fi
