#!/usr/bin/env bash
set -euo pipefail

cd "$(dirname "$0")"

if ! command -v docker >/dev/null 2>&1; then
  echo "未检测到 Docker。请先安装 Docker Engine，然后重新运行 ./setup.sh"
  exit 1
fi
if ! docker compose version >/dev/null 2>&1; then
  echo "未检测到 docker compose 插件。请安装后重新运行 ./setup.sh"
  exit 1
fi

if [ ! -f .env ]; then
  echo "首次部署 IMPRINT。API Key 只会写入当前服务器的 .env。"
  read -r -s -p "DeepSeek API Key: " API_KEY
  echo
  if [ -z "$API_KEY" ]; then
    echo "API Key 不能为空。"
    exit 1
  fi
  read -r -p "公网端口 [80]: " PUBLIC_PORT_INPUT
  PUBLIC_PORT_INPUT="${PUBLIC_PORT_INPUT:-80}"
  umask 077
  {
    echo "LLM_PROVIDER=deepseek"
    echo "LLM_MODEL=deepseek-chat"
    echo "DEEPSEEK_API_KEY=$API_KEY"
    echo "PUBLIC_PORT=$PUBLIC_PORT_INPUT"
    echo "APP_UID=$(id -u)"
    echo "APP_GID=$(id -g)"
    echo "RATE_LIMIT_PER_MINUTE=12"
    echo "MAX_REQUEST_BYTES=65536"
    echo "COOKIE_SECURE=0"
    echo "ENABLE_HSTS=0"
    echo "LOG_REQUESTS=0"
  } > .env
  chmod 600 .env
fi

mkdir -p data
chmod 700 data

docker compose up -d --build

PUBLIC_PORT_VALUE="$(sed -n 's/^PUBLIC_PORT=//p' .env | tail -n 1)"
PUBLIC_PORT_VALUE="${PUBLIC_PORT_VALUE:-80}"
echo
echo "IMPRINT 已启动。"
echo "访问：http://<服务器公网IP>:${PUBLIC_PORT_VALUE}"
echo "状态：docker compose ps"
echo "日志：docker compose logs -f app"
