/ .github / workflows / quality.yml
quality.yml
 1  name: Code Quality
 2  on: [push, pull_request]
 3  
 4  jobs:
 5    lint:
 6      runs-on: ubuntu-latest
 7      steps:
 8        - uses: actions/checkout@v6
 9        
10        - name: Check file permissions
11          run: |
12            find . -type f -perm /111 -name "*.sh" | head -10 || true
13        
14        - name: Check for secrets
15          uses: trufflesecurity/trufflehog@main
16          with:
17            path: ./
18            base: ${{ github.event.pull_request.base.sha || github.event.before }}
19            head: ${{ github.sha }}
20          continue-on-error: true
21        
22        - name: Check TODO/FIXME
23          run: |
24            echo "=== TODOs ==="
25            grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.rs" --include="*.res" --include="*.py" --include="*.ex" . | head -20 || echo "None found"
26        
27        - name: Check for large files
28          run: |
29            find . -type f -size +1M -not -path "./.git/*" | head -10 || echo "No large files"
30        
31        - name: EditorConfig check
32          uses: editorconfig-checker/action-editorconfig-checker@main
33          continue-on-error: true
34  
35    docs:
36      runs-on: ubuntu-latest
37      steps:
38        - uses: actions/checkout@v6
39        - name: Check documentation
40          run: |
41            MISSING=""
42            [ ! -f "README.md" ] && [ ! -f "README.adoc" ] && MISSING="$MISSING README"
43            [ ! -f "LICENSE" ] && [ ! -f "LICENSE.txt" ] && [ ! -f "LICENSE.md" ] && MISSING="$MISSING LICENSE"
44            [ ! -f "CONTRIBUTING.md" ] && [ ! -f "CONTRIBUTING.adoc" ] && MISSING="$MISSING CONTRIBUTING"
45            
46            if [ -n "$MISSING" ]; then
47              echo "::warning::Missing docs:$MISSING"
48            else
49              echo "✅ Core documentation present"
50            fi