#!/usr/bin/env bash

set -euo pipefail

BASE_DIR="/uk/container/beszel-agent"
COMPOSE_FILE="${BASE_DIR}/docker-compose.yaml"
HOSTNAME_SCRIPT_URL="https://gist.smtx.fun/uk/shell/raw/HEAD/init_hostname.sh"

mkdir -p "${BASE_DIR}/data/beszel_agent_data"

SYSTEM_NAME="$(
  curl -fsSL "${HOSTNAME_SCRIPT_URL}" | bash
)"

if [[ -z "${SYSTEM_NAME}" ]]; then
  echo "错误：未能生成 Beszel Agent 主机名" >&2
  exit 1
fi

if [[ ! "${SYSTEM_NAME}" =~ ^[a-z0-9][a-z0-9-]*$ ]]; then
  echo "错误：生成的主机名不合法：${SYSTEM_NAME}" >&2
  exit 1
fi

cat > "${COMPOSE_FILE}" <<EOF
services:
  beszel-agent:
    hostname: "${SYSTEM_NAME}"
    container_name: beszel-agent
    image: henrygd/beszel-agent:latest
    restart: unless-stopped
    network_mode: host

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/beszel_agent_data:/var/lib/beszel-agent

    environment:
      LISTEN: "45876"
      KEY: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBwdGhEA5KNbeNt761qa4iAu8bL6JsTZtuooEjtYS7z4"
      TOKEN: "5840c830-5842-4e4e-b6e3-c0ca5191d4a6"
      HUB_URL: "http://192.168.49.1:8022"

    healthcheck:
      test: ["CMD", "/agent", "health"]
      interval: 120s
EOF

echo "生成的系统名称：${SYSTEM_NAME}"
echo "Compose 文件：${COMPOSE_FILE}"

docker compose --project-directory "${BASE_DIR}" -f "${COMPOSE_FILE}" up -d --pull always

docker compose --project-directory "${BASE_DIR}" -f "${COMPOSE_FILE}" ps