initial COM2 system snapshot

This commit is contained in:
gitea
2026-03-06 15:22:40 +00:00
commit 9c0fa49baf
4377 changed files with 273033 additions and 0 deletions

84
com2_fix_mautic_db_ref.sh Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -euo pipefail
F="/opt/hx-ki/com2-stack/docker-compose.yml"
[ -f "$F" ] || { echo "FEHLT: $F"; exit 1; }
echo "=== COM2: FIX MAUTIC DB SERVICE REF (deterministisch) ==="
python3 - <<'PY'
from pathlib import Path
import re
p = Path("/opt/hx-ki/com2-stack/docker-compose.yml")
s = p.read_text()
# 1) Services auf Top-Level unter "services:" einsammeln (2-space indentation)
m = re.search(r'(?ms)^services:\s*\n(.*?)(?=^\S|\Z)', s)
if not m:
raise SystemExit("FEHLT: Top-Level 'services:' Block")
services_block = m.group(1)
service_names = re.findall(r'(?m)^\s{2}([A-Za-z0-9_.-]+):\s*$', services_block)
print("[A] Gefundene Services:", ", ".join(service_names) if service_names else "KEINE?!")
# 2) Kandidaten für MariaDB finden
candidates = [n for n in service_names if "mariadb" in n.lower() or n.lower() in ("db","mysql")]
if not candidates:
raise SystemExit("FEHLT: Kein DB-Service gefunden (mariadb/db/mysql). Du musst den DB-Service im Compose haben.")
db_service = candidates[0]
print("[B] DB-Service gewählt:", db_service)
# 3) Mautic-Block finden
ma = re.search(r'(?ms)^\s{2}mautic:\s*\n(.*?)(?=^\s{2}[A-Za-z0-9_.-]+:\s*$|\Z)', services_block)
if not ma:
raise SystemExit("FEHLT: Service 'mautic' existiert nicht im Compose.")
mautic_block = ma.group(0)
# 4) depends_on im mautic-Block patchen:
# - mapping style:
# depends_on:
# hxki-mariadb:
# condition: service_started
# - list style:
# depends_on:
# - hxki-mariadb
def patch_depends_on(block: str, db_service: str) -> str:
# mapping key ersetzen: " <something>:" direkt unter depends_on
block = re.sub(
r'(?ms)(^\s{4}depends_on:\s*\n)(?:^\s{6}[A-Za-z0-9_.-]+:\s*\n(?:^\s{8}.*\n)*)',
lambda m: m.group(1) + f" {db_service}:\n condition: service_started\n",
block,
count=1
)
# list style: "- <something>" unter depends_on
block = re.sub(
r'(?ms)(^\s{4}depends_on:\s*\n)(?:^\s{6}-\s*[A-Za-z0-9_.-]+\s*\n)+',
lambda m: m.group(1) + f" - {db_service}\n",
block,
count=1
)
return block
patched = patch_depends_on(mautic_block, db_service)
# 5) Optional: MAUTIC_DB_HOST/DB_HOST im mautic env patchen (nur wenn vorhanden)
patched = re.sub(r'(?m)^(\s{6}(MAUTIC_DB_HOST|DB_HOST|MYSQL_HOST)\s*:\s*).*$',
rf'\1{db_service}', patched)
# 6) Compose wieder zusammensetzen
services_block_new = services_block.replace(mautic_block, patched)
s_new = s[:m.start(1)] + services_block_new + s[m.end(1):]
p.write_text(s_new)
print("[C] OK: mautic referenziert jetzt DB-Service:", db_service)
PY
echo "[D] VALIDATE"
docker compose -f "$F" config >/dev/null
echo "OK: Compose valide."
echo "=== ENDE ==="