#!/bin/bash
# 升级 fpk 后：使用飞牛中已导入的本地镜像重建容器（pichost/data 数据目录不变）。
COMPOSE_DIR="${TRIM_APPDEST}/docker"
COMPOSE_FILE="${COMPOSE_DIR}/docker-compose.yaml"
CONTAINER_NAME="pichost"

log_fail() {
  echo "$1" > "${TRIM_TEMP_LOGFILE:-/dev/stderr}"
}

if [ ! -f "${COMPOSE_FILE}" ]; then
  log_fail "找不到 docker-compose.yaml"
  exit 1
fi

IMAGE="$(sed -n 's/^[[:space:]]*image:[[:space:]]*//p' "${COMPOSE_FILE}" | head -1 | tr -d ' \r')"
if [ -z "${IMAGE}" ]; then
  log_fail "无法从 compose 解析镜像名"
  exit 1
fi

# 升级向导不含 port 字段，尽量沿用旧容器端口
if [ -z "${wizard_port:-}" ] && docker inspect "${CONTAINER_NAME}" >/dev/null 2>&1; then
  wizard_port="$(docker inspect "${CONTAINER_NAME}" --format '{{with index .HostConfig.PortBindings "6892/tcp"}}{{with index . 0}}{{.HostPort}}{{end}}{{end}}' 2>/dev/null || true)"
fi
export wizard_port="${wizard_port:-6892}"

if ! docker compose version >/dev/null 2>&1; then
  if docker inspect "${CONTAINER_NAME}" >/dev/null 2>&1; then
    docker restart -t 10 "${CONTAINER_NAME}" >/dev/null 2>&1 || {
      log_fail "docker compose 不可用，且容器重启失败"
      exit 1
    }
    exit 0
  fi
  log_fail "docker compose 不可用，且未找到 ${CONTAINER_NAME} 容器"
  exit 1
fi

if ! (cd "${COMPOSE_DIR}" && docker compose up -d --force-recreate); then
  log_fail "重建容器失败，请检查 Docker 日志（镜像：${IMAGE}）"
  exit 1
fi

exit 0
