#!/bin/bash
# Установка уже скачанного бинарника. Запускается только systemd/at — не из процесса агента.
set -uo pipefail

LOG="/var/log/lmcs-agent-update.log"
ENV_FILE="/run/lmcs-agent-update.env"
NEW="/tmp/lmcs-agent-new"
BACKUP="/tmp/lmcs-agent-backup"
BIN="/usr/bin/lmcs-agent-bin"

log() {
  echo "$(date -Is) $*" | tee -a "$LOG"
}

rollback() {
  if [ -f "$BACKUP" ]; then
    log "Rolling back to previous binary"
    mv -f "$BACKUP" "$BIN"
    chmod +x "$BIN"
  fi
  systemctl start lmcs-agent 2>/dev/null || true
}

if [ -f "$ENV_FILE" ]; then
  # shellcheck disable=SC1090
  source "$ENV_FILE"
fi

log "=== LMCS install phase (run-update.sh) BIN=$BIN ==="

if [ ! -f "$NEW" ]; then
  log "Missing $NEW — abort without stopping agent"
  exit 1
fi

log "Stopping lmcs-agent"
systemctl stop lmcs-agent 2>/dev/null || true

if [ -f "$BIN" ]; then
  cp -f "$BIN" "$BACKUP"
fi
mv -f "$NEW" "$BIN"
chmod +x "$BIN"

log "Starting lmcs-agent"
if ! systemctl start lmcs-agent; then
  log "systemctl start failed"
  rollback
  exit 1
fi
sleep 2

if systemctl is-active --quiet lmcs-agent; then
  log "Update successful"
  rm -f "$BACKUP" "$ENV_FILE"
  exit 0
fi

log "Service not active after update"
rollback
exit 1
