#!/bin/bash

### This script is called after the user upgrades the application.
### 校验用户配置（端口/访问令牌）在升级后保留；数据（备份清单/日志）升级不触碰。

set -euo pipefail

log_msg() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "${TRIM_PKGVAR:-/tmp}/info.log" 2>/dev/null || true
}

log_msg "upgrade_callback: start (old=${TRIM_OLD_APPVER:-unknown} -> new=${TRIM_APPVER:-unknown})"

# 1. 校验配置目录存在
if [ ! -d "${TRIM_PKGETC:-/nonexistent}" ]; then
    log_msg "upgrade: WARN TRIM_PKGETC missing, creating"
    mkdir -p "${TRIM_PKGETC}"
fi

# 2. 校验 config.conf 存在；缺失时按默认重建，不阻断升级
if [ ! -f "${TRIM_PKGETC}/config.conf" ]; then
    log_msg "upgrade: WARN config.conf missing, regenerating defaults"
    printf 'wizard_app_port=%s\n' "${wizard_app_port:-4534}" > "${TRIM_PKGETC}/config.conf"
    TOKEN="$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n')"
    printf 'auth_token=%s\n' "${TOKEN}" >> "${TRIM_PKGETC}/config.conf"
    log_msg "upgrade: regenerated config.conf with new auth_token"
else
    log_msg "upgrade: config.conf preserved (port + auth_token)"
fi

# 3. 校验数据目录仍在
if [ ! -d "${TRIM_PKGVAR:-/nonexistent}" ]; then
    log_msg "upgrade: WARN TRIM_PKGVAR missing, creating"
    mkdir -p "${TRIM_PKGVAR}"
fi

# 4. 可选依赖：ShazamIO 兜底识别（升级时确保安装，失败不阻塞）
# 未装则尝试安装；已装则跳过（pip install 幂等）。
log_msg "upgrade: ensuring optional dependency shazamio (ShazamIO 兜底识别)..."
if python3 -m pip install --quiet -i https://pypi.tuna.tsinghua.edu.cn/simple shazamio >> "${TRIM_PKGVAR:-/tmp}/info.log" 2>&1; then
    log_msg "upgrade: shazamio ensured OK (ShazamIO 兜底识别已启用)"
else
    log_msg "upgrade: shazamio install FAILED (可稍后手动: python3 -m pip install shazamio；AcoustID 主链路不受影响)"
fi

log_msg "upgrade_callback: done (config preserved)"
exit 0
