Files
hx-ki.com2/COM2_RESTORE_WEB_ONE_SHOT.sh
2026-03-06 15:22:40 +00:00

69 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
DST="/opt/hx-ki/com2-stack/docker-compose.yml"
[ -f "$DST" ] || { echo "FEHLT: $DST"; exit 1; }
pick_src() {
# 1) COM2 Backups (neueste zuerst)
for f in $(ls -1t /opt/hx-ki/com2-stack/docker-compose.yml.bak.* 2>/dev/null); do
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
done
# 2) COM-Stack
for f in /opt/hx-ki/com-stack/docker-compose.yml /opt/hx-ki/com-stack/docker-compose.yml.bak.*; do
[ -f "$f" ] || continue
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
done
# 3) docker Backups
for f in /opt/hx-ki/docker/docker-compose.yml*; do
[ -f "$f" ] || continue
grep -qE '^[[:space:]]{2}hxki-web:[[:space:]]*$' "$f" && { echo "$f"; return 0; }
done
return 1
}
SRC="$(pick_src)"
[ -n "$SRC" ] || { echo "FAIL: Keine Quelle mit hxki-web gefunden"; exit 1; }
export SRC DST
echo "=== COM2 RESTORE hxki-web ==="
echo "SRC=$SRC"
echo "DST=$DST"
python3 <<'PY'
import re, pathlib, os
src = pathlib.Path(os.environ["SRC"]).read_text()
dstp = pathlib.Path(os.environ["DST"])
dst = dstp.read_text()
m = re.search(r'(?ms)^services:\s*\n(.*?)(?=^\S|\Z)', src)
if not m:
raise SystemExit("FEHLT: services: im Source")
block = m.group(1)
pat = r'(?ms)^\s{2}hxki-web:\s*\n(?:^\s{4}.*\n|^\s{6}.*\n|^\s{8}.*\n|^\s*\n)*?(?=^\s{2}[A-Za-z0-9_.-]+:\s*$|\Z)'
mm = re.search(pat, block)
if not mm:
raise SystemExit("FEHLT: hxki-web Block")
web = mm.group(0)
if 'hxki-web:' in dst:
print("OK: hxki-web bereits vorhanden")
raise SystemExit(0)
dst = re.sub(r'(?m)^(services:\s*\n)', r'\1' + web + '\n', dst, count=1)
dstp.write_text(dst)
print("OK: hxki-web eingefügt")
PY
docker compose -f "$DST" config >/dev/null
echo "OK: Compose valide."