b3b6b702d1
- publish_gatekeeper.py (neues Gatekeeper-System) - 4 Premium-Artikel: Veggie Match, Berlin 1960, Wild Tiled West, Scream Park - Alle kumulierten Artikel, Scripts, Medien und Caches
27 lines
1.6 KiB
Bash
Executable File
27 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
FILE="${1:-}"
|
|
ERRORS=0
|
|
WARNINGS=0
|
|
ok() { echo "✅ $1"; }
|
|
fail() { echo "❌ $1"; ERRORS=$((ERRORS+1)); }
|
|
warn() { echo "⚠️ $1"; WARNINGS=$((WARNINGS+1)); }
|
|
if [ -z "$FILE" ] || [ ! -f "$FILE" ]; then echo "Usage: $0 <file>"; exit 1; fi
|
|
echo "=== $FILE ==="
|
|
READMORE_COUNT=$(grep -c 'system-readmore' "$FILE" || true)
|
|
if [ "$READMORE_COUNT" = "1" ]; then ok "Read-More: 1"
|
|
elif [ "$READMORE_COUNT" = "0" ]; then fail "Read-More: FEHLT"
|
|
else fail "Read-More: $READMORE_COUNT (muss 1)"; fi
|
|
if grep -q '<div class="meta">' "$FILE"; then fail "div.meta statt p.meta"; else ok "p.meta korrekt"; fi
|
|
BODY=$(sed -n '/<body>/,/<\/body>/p' "$FILE")
|
|
if echo "$BODY" | grep -qP '[\x{1F300}-\x{1F9FF}\x{2600}-\x{27BF}\x{1F600}-\x{1F64F}]'; then fail "Emojis im Body"; else ok "Keine Emojis"; fi
|
|
if echo "$BODY" | grep -q '<h2>Quellen</h2>'; then fail "h2>Quellen statt span-strong"; else ok "Quellen-Überschrift korrekt"; fi
|
|
LINKS_TOTAL=$(echo "$BODY" | grep -o '<a ' | wc -l)
|
|
LINKS_BLANK=$(echo "$BODY" | grep -o 'target="_blank"' | wc -l)
|
|
if [ "$LINKS_TOTAL" -gt 0 ] && [ "$LINKS_TOTAL" != "$LINKS_BLANK" ]; then fail "$((LINKS_TOTAL - LINKS_BLANK)) von $LINKS_TOTAL Links ohne target=_blank"
|
|
else ok "Alle $LINKS_TOTAL Links mit target=_blank"; fi
|
|
if grep -q '<meta name="description" content="[^"]*[a-zA-Z]' "$FILE"; then ok "Meta-Description"; else fail "Meta-Description fehlt"; fi
|
|
if grep -q '<meta name="keywords" content="[^"]*[a-zA-Z]' "$FILE"; then ok "Meta-Keywords"; else fail "Meta-Keywords fehlen"; fi
|
|
echo ""
|
|
[ $ERRORS -eq 0 ] && echo "✅ ALLE CHECKS BESTANDEN" || echo "❌ $ERRORS Fehler"
|