#!/bin/bash

### This script is called after the user installs the application.
### 持久化向导端口与访问令牌到配置目录，供 cmd/main 与 server.py 读取。

set -euo pipefail

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

mkdir -p "${TRIM_PKGETC:-/tmp}"

# 端口：向导填写则使用，否则保留已有配置或默认 4534。
# 修复：此前用 `>` 覆盖写会清空用户在设置页保存的 ai_key 等配置；
# 改为合并写——已有 wizard_app_port 则更新，其余键原样保留。
PORT="${wizard_app_port:-}"
CONF="${TRIM_PKGETC:-/tmp}/config.conf"
if [ -f "${CONF}" ]; then
    [ -z "${PORT}" ] && PORT="$(grep -E '^wizard_app_port=' "${CONF}" | head -1 | cut -d= -f2- | tr -d '[:space:]')"
    grep -v '^wizard_app_port=' "${CONF}" > "${CONF}.tmp" 2>/dev/null || true
    mv "${CONF}.tmp" "${CONF}" 2>/dev/null || true
else
    [ -z "${PORT}" ] && PORT="4534"
fi
printf 'wizard_app_port=%s\n' "${PORT}" >> "${CONF}"
log_msg "persisted wizard_app_port=${PORT}"

# 访问令牌：向导填写则使用，留空则自动生成 32 位十六进制
TOKEN="${wizard_token:-}"
if [ -n "${TOKEN}" ] && [ -n "${wizard_token_confirm:-}" ] && [ "${TOKEN}" != "${wizard_token_confirm}" ]; then
    log_msg "ERROR: 两次输入的访问密码不一致"
    echo "两次输入的访问密码不一致，请返回重新设置" >&2
    exit 1
fi
if [ -z "${TOKEN}" ]; then
    TOKEN="$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n')"
fi
printf 'auth_token=%s\n' "${TOKEN}" >> "${TRIM_PKGETC:-/tmp}/config.conf"
log_msg "persisted auth_token=${TOKEN}"

# 可选依赖：ShazamIO 兜底识别（逆向 Shazam API，免费免 KEY，曲库大华语覆盖好）
# 失败不阻塞安装——AcoustID 主链路不依赖它，未装时 recognize 静默降级。
log_msg "installing 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 "shazamio installed OK (ShazamIO 兜底识别已启用)"
else
    log_msg "shazamio install FAILED (可稍后手动: python3 -m pip install shazamio；AcoustID 主链路不受影响)"
fi

exit 0
