#!/bin/bash
# 升级前回调：备份数据目录（升级保留数据，见设计文档 §3.6）。
# 备份写入数据目录的 backup/ 子目录；失败必须显式报错，不允许静默。
# 注意：飞牛的「手动安装」（从 NAS 添加 fpk）不会走本回调（真机取证：不会生成其实的备份目录），
# 数据保留靠 install_callback 的迁移与 uninstall_callback 的"不删除"策略保障。
. "$(dirname "$0")/lib.sh"
require_env TRIM_PKGVAR TRIM_PKGHOME
probe_lifecycle upgrade_init

BACKUP_DIR="${TRIM_PKGVAR}/backup"
if ! mkdir -p "$BACKUP_DIR"; then
  fail_msg "错误：升级前备份失败：无法创建备份目录 ${BACKUP_DIR}，已中止升级"
  exit 1
fi
STAMP="$(date '+%Y%m%d%H%M%S')"
if ! tar czf "${BACKUP_DIR}/certdock-${STAMP}.tar.gz" --exclude=backup -C "$TRIM_PKGVAR" .; then
  fail_msg "错误：升级前备份失败（${TRIM_PKGVAR}），已中止升级"
  exit 1
fi
echo "升级前已备份 ${TRIM_PKGVAR} -> ${BACKUP_DIR}/certdock-${STAMP}.tar.gz"
exit 0
