#!/bin/bash
# 安装完成后回调：准备数据目录、迁移旧位置数据、授权给应用专用用户。
# TRIM_GROUPNAME 允许缺失（不同系统版本导出变量不一致），缺失时仅变更属主。
#
# 数据位置（0.1.16 起）：TRIM_PKGVAR（@appdata）——飞牛在每次（重新）安装时会重建
# @apphome（TRIM_PKGHOME），故数据不再放那里；若旧位置仍有数据（≤0.1.15 安装的），
# 本次安装会整体搬迁过来（升级保数据，见 uninstall_callback 注释中的事故说明）。
. "$(dirname "$0")/lib.sh"
require_env TRIM_PKGHOME TRIM_PKGVAR TRIM_USERNAME
probe_lifecycle install_callback

if ! mkdir -p "${TRIM_PKGVAR}"; then
  fail_msg "错误：无法创建数据目录 ${TRIM_PKGVAR}"
  exit 1
fi

# 旧位置（TRIM_PKGHOME）→ 新位置（TRIM_PKGVAR）一次性搬迁：
# 仅当新位置尚无数据库而旧位置存在数据库时执行；只复制、不删除（删除操作在数据面前一律保守）。
if [ ! -e "${TRIM_PKGVAR}/certdock.db" ] && [ -e "${TRIM_PKGHOME}/certdock.db" ]; then
  echo "检测到旧位置数据（${TRIM_PKGHOME}），迁移到 ${TRIM_PKGVAR} ..."
  if cp -a "${TRIM_PKGHOME}/." "${TRIM_PKGVAR}/"; then
    echo "旧数据迁移完成。"
  else
    fail_msg "警告：旧数据迁移失败，请手工把 ${TRIM_PKGHOME} 下的内容复制到 ${TRIM_PKGVAR}"
  fi
fi

if [ -n "${TRIM_GROUPNAME:-}" ]; then
  OWNER="${TRIM_USERNAME}:${TRIM_GROUPNAME}"
else
  OWNER="${TRIM_USERNAME}"
  echo "警告：TRIM_GROUPNAME 未设置，仅变更数据目录属主、不改属组"
fi
if ! chown -R "$OWNER" "${TRIM_PKGVAR}"; then
  fail_msg "警告：数据目录属主设置失败（${TRIM_PKGVAR} → ${OWNER}），应用可能无法读写数据，请手工执行 chown"
fi
printf '%s' "${TRIM_APPVER:-unknown}" >"${TRIM_PKGVAR}/.last-version" 2>/dev/null || true
echo "CertDock 安装完成：数据目录 ${TRIM_PKGVAR}（属主 ${OWNER}）"
exit 0
