#!/usr/bin/env bash
# 交互式生成 env 文件
# 用法：bash configure-env.sh

set -euo pipefail

CONF_DIR=/var/container/data/datahub/env
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
REPO_ROOT=$(cd "$SCRIPT_DIR/../../.." && pwd)

if [ ! -d "$CONF_DIR" ]; then
    echo "[!] $CONF_DIR 不存在，请先执行: bash $SCRIPT_DIR/setup-data-dirs.sh" >&2
    exit 1
fi

# ---------- 1. backend env ----------
BACKEND_ENV="$CONF_DIR/datahub-backend.env"
BACKEND_TPL="$REPO_ROOT/deploy/podman/env/datahub-backend.env.example"

if [ -f "$BACKEND_ENV" ]; then
    echo "[=] $BACKEND_ENV 已存在，跳过"
else
    cp "$BACKEND_TPL" "$BACKEND_ENV"
    chmod 600 "$BACKEND_ENV"
    echo "[+] 已生成 $BACKEND_ENV（如需调整 TOOLS_HOST 等参数请手动编辑）"
fi

# ---------- 2. frontend env：交互式询问 API_BASE_URL ----------
FRONTEND_ENV="$CONF_DIR/datahub-frontend.env"

CURRENT_VAL=""
if [ -f "$FRONTEND_ENV" ]; then
    CURRENT_VAL=$(grep -E "^API_BASE_URL=" "$FRONTEND_ENV" | sed 's/^API_BASE_URL=//')
    echo "[=] 当前 $FRONTEND_ENV 中 API_BASE_URL=$CURRENT_VAL"
fi

DEFAULT_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
DEFAULT_URL="http://${DEFAULT_IP:-127.0.0.1}:9501"
SUGGEST="${CURRENT_VAL:-$DEFAULT_URL}"

echo
echo "请输入浏览器访问后端 API 的完整地址。"
echo "示例：http://192.168.1.100:9501  或  https://api.example.com"
read -rp "API_BASE_URL [$SUGGEST]: " INPUT
API_BASE_URL="${INPUT:-$SUGGEST}"

if ! [[ "$API_BASE_URL" =~ ^https?:// ]]; then
    echo "[!] 地址必须以 http:// 或 https:// 开头" >&2
    exit 1
fi

cat > "$FRONTEND_ENV" <<EOF
# 由 configure-env.sh 生成于 $(date -Iseconds)
API_BASE_URL=$API_BASE_URL
EOF
chmod 600 "$FRONTEND_ENV"

echo
echo "[+] 已写入 $FRONTEND_ENV"
echo "    API_BASE_URL=$API_BASE_URL"
echo
echo "下一步："
echo "  1. 创建/更新 podman secrets：bash $SCRIPT_DIR/create-secrets.sh"
echo "  2. 构建镜像后启动 datahub-frontend.service（容器启动时会自动注入此 URL）"
echo "  3. 已运行的服务若要换 IP：编辑 $FRONTEND_ENV 后 systemctl --user restart datahub-frontend.service"
