#!/usr/bin/env bash
# Pindah profil atun -> bambang, dengan rollback otomatis kalau gateway gagal hidup.
# Dijalankan terpisah dari sesi (setsid) supaya tetap jalan walau sesi agen ikut mati.
set -u
HOME_DIR=/home/mantapman
PROF=$HOME_DIR/.hermes/profiles
LOG=$HOME_DIR/.hermes/switch_bambang.log
UNIT=$HOME_DIR/.config/systemd/user

echo "=== $(date -u '+%F %T UTC') mulai pindah profil ===" >> "$LOG"

# 1. unit media server untuk bambang (sebelum rename, supaya tidak ada jeda panjang)
if [ ! -f "$UNIT/bambang-media-server.service" ]; then
  sed 's#profiles/atun/workspace#profiles/bambang/workspace#g; s#Atun media server#Bambang media server#g' \
      "$UNIT/atun-media-server.service" > "$UNIT/bambang-media-server.service"
  echo "unit bambang-media-server dibuat" >> "$LOG"
fi
systemctl --user daemon-reload

# 2. rename profil
if [ -d "$PROF/atun" ] && [ ! -d "$PROF/atun-lama" ]; then
  mv "$PROF/atun" "$PROF/atun-lama"
  echo "atun -> atun-lama" >> "$LOG"
fi

# 3. media server pindah ke bambang
systemctl --user disable --now atun-media-server.service >/dev/null 2>&1
systemctl --user enable --now bambang-media-server.service >/dev/null 2>&1
echo "media server: bambang -> $(systemctl --user is-active bambang-media-server.service)" >> "$LOG"

# 4. restart gateway
systemctl --user restart hermes-gateway.service
sleep 30

if systemctl --user is-active --quiet hermes-gateway.service; then
  echo "gateway AKTIF setelah pindah (profil bambang)" >> "$LOG"
else
  echo "gateway GAGAL - rollback ke atun" >> "$LOG"
  systemctl --user disable --now bambang-media-server.service >/dev/null 2>&1
  if [ -d "$PROF/atun-lama" ] && [ ! -d "$PROF/atun" ]; then
    mv "$PROF/atun-lama" "$PROF/atun"
  fi
  systemctl --user enable --now atun-media-server.service >/dev/null 2>&1
  systemctl --user restart hermes-gateway.service
  sleep 20
  echo "status setelah rollback: $(systemctl --user is-active hermes-gateway.service)" >> "$LOG"
fi
echo "=== $(date -u '+%F %T UTC') selesai ===" >> "$LOG"
