rsr-antipattern.yml
1 # RSR Anti-Pattern CI Check 2 # SPDX-License-Identifier: AGPL-3.0-or-later 3 # 4 # Enforces: No TypeScript, No Go, No Python (except SaltStack), No npm 5 # Allows: ReScript, Deno, WASM, Rust, OCaml, Haskell, Guile/Scheme 6 7 name: RSR Anti-Pattern Check 8 9 on: 10 push: 11 branches: [main, master, develop] 12 pull_request: 13 branches: [main, master, develop] 14 15 jobs: 16 antipattern-check: 17 runs-on: ubuntu-latest 18 steps: 19 - uses: actions/checkout@v6 20 21 - name: Check for TypeScript 22 run: | 23 if find . -name "*.ts" -o -name "*.tsx" | grep -v node_modules | grep -q .; then 24 echo "❌ TypeScript files detected - use ReScript instead" 25 find . -name "*.ts" -o -name "*.tsx" | grep -v node_modules 26 exit 1 27 fi 28 echo "✅ No TypeScript files" 29 30 - name: Check for Go 31 run: | 32 if find . -name "*.go" | grep -q .; then 33 echo "❌ Go files detected - use Rust/WASM instead" 34 find . -name "*.go" 35 exit 1 36 fi 37 echo "✅ No Go files" 38 39 - name: Check for Python (non-SaltStack) 40 run: | 41 PY_FILES=$(find . -name "*.py" | grep -v salt | grep -v _states | grep -v _modules | grep -v pillar | grep -v venv | grep -v __pycache__ || true) 42 if [ -n "$PY_FILES" ]; then 43 echo "❌ Python files detected - only allowed for SaltStack" 44 echo "$PY_FILES" 45 exit 1 46 fi 47 echo "✅ No non-SaltStack Python files" 48 49 - name: Check for npm lockfiles 50 run: | 51 if [ -f "package-lock.json" ] || [ -f "yarn.lock" ]; then 52 echo "❌ npm/yarn lockfile detected - use Deno instead" 53 exit 1 54 fi 55 echo "✅ No npm lockfiles" 56 57 - name: Check for tsconfig 58 run: | 59 if [ -f "tsconfig.json" ]; then 60 echo "❌ tsconfig.json detected - use ReScript instead" 61 exit 1 62 fi 63 echo "✅ No tsconfig.json" 64 65 - name: Verify Deno presence (if package.json exists) 66 run: | 67 if [ -f "package.json" ]; then 68 if [ ! -f "deno.json" ] && [ ! -f "deno.jsonc" ]; then 69 echo "⚠️ Warning: package.json without deno.json - migration recommended" 70 fi 71 fi 72 echo "✅ Deno configuration check complete" 73 74 - name: Summary 75 run: | 76 echo "╔════════════════════════════════════════════════════════════╗" 77 echo "║ RSR Anti-Pattern Check Passed ✅ ║" 78 echo "║ ║" 79 echo "║ Allowed: ReScript, Deno, WASM, Rust, OCaml, Haskell, ║" 80 echo "║ Guile/Scheme, SaltStack (Python) ║" 81 echo "║ ║" 82 echo "║ Blocked: TypeScript, Go, npm, Python (non-Salt) ║" 83 echo "╚════════════════════════════════════════════════════════════╝"