docs(ci): Front-Matter + CI-Docs + YT-Sync vorbereitet (MP-7)
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
err=0
|
||||
|
||||
has() { grep -q "$2" "$1" || { echo "[DRIFT] '$2' fehlt in $1"; err=1; }; }
|
||||
miss() { grep -q "$2" "$1" && { echo "[DRIFT] Veralteter Begriff '$2' in $1"; err=1; }; }
|
||||
|
||||
# Quelle der Wahrheit: Spring Cloud Gateway
|
||||
has docs/overview/system-overview.md "Spring Cloud Gateway"
|
||||
has docs/architecture/adr/0007-api-gateway-pattern-de.md "Spring Cloud Gateway"
|
||||
miss docs/architecture/adr/0007-api-gateway-pattern-de.md "Ktor"
|
||||
|
||||
# C4: Container muss Technology korrekt führen
|
||||
has docs/architecture/c4/02-container-de.puml "Spring Cloud Gateway"
|
||||
miss docs/architecture/c4/02-container-de.puml "Ktor"
|
||||
|
||||
# Verbiete versehentlich verbliebene englische ADR/C4 ohne -de
|
||||
if ls docs/architecture/adr/*.md 2>/dev/null | grep -E -v '-de\.md$' >/dev/null; then
|
||||
echo "[DRIFT] Englische ADR-Dateien ohne -de gefunden in docs/architecture/adr/"
|
||||
ls docs/architecture/adr/*.md | grep -E -v '-de\.md$' || true
|
||||
err=1
|
||||
fi
|
||||
if ls docs/architecture/c4/*.puml 2>/dev/null | grep -E -v '-de\.puml$' >/dev/null; then
|
||||
echo "[DRIFT] Englische C4-Dateien ohne -de gefunden in docs/architecture/c4/"
|
||||
ls docs/architecture/c4/*.puml | grep -E -v '-de\.puml$' || true
|
||||
err=1
|
||||
fi
|
||||
|
||||
exit $err
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p build/diagrams
|
||||
shopt -s nullglob
|
||||
for f in docs/architecture/c4/*.puml; do
|
||||
docker run --rm -v "$PWD":/data plantuml/plantuml -tsvg "/data/$f" -o "/data/build/diagrams"
|
||||
echo "Rendered build/diagrams/$(basename "${f%.puml}").svg"
|
||||
done
|
||||
@@ -0,0 +1,33 @@
|
||||
import os, re, yaml, json
|
||||
from glob import glob
|
||||
|
||||
try:
|
||||
import jsonschema
|
||||
except ImportError:
|
||||
# GitHub Actions step will install this before running; provide friendlier message if missing
|
||||
raise SystemExit("[FM] jsonschema package not installed. Please run: pip install jsonschema pyyaml")
|
||||
|
||||
SCHEMA_PATH = 'docs/.frontmatter.schema.json'
|
||||
FM_REGEX = re.compile(r'^---\n(.*?)\n---', re.S)
|
||||
|
||||
with open(SCHEMA_PATH, encoding='utf-8') as f:
|
||||
schema = json.load(f)
|
||||
|
||||
errors = 0
|
||||
for path in glob('docs/**/*.md', recursive=True):
|
||||
# Skip generated or non-content files if any (none by default)
|
||||
with open(path, 'r', encoding='utf-8') as fh:
|
||||
content = fh.read()
|
||||
m = FM_REGEX.search(content)
|
||||
if not m:
|
||||
print(f"[FM] fehlt: {path}")
|
||||
errors = 1
|
||||
continue
|
||||
try:
|
||||
fm = yaml.safe_load(m.group(1)) or {}
|
||||
jsonschema.validate(fm, schema)
|
||||
except Exception as e:
|
||||
print(f"[FM] invalid in {path}: {e}")
|
||||
errors = 1
|
||||
|
||||
exit(errors)
|
||||
Reference in New Issue
Block a user