#!/bin/bash
#
# Octop 本地版 — 升级后回调
# 升级会重装包内向导文件（wizard/config 恢复成带占位符的模板），
# 这里用现有 .env 的凭据重新渲染「设置」窗口的当前密码显示，
# 并确认回落备份 octop-login.txt 存在（不覆盖用户已在 Web 内修改的密码，
# 仅在备份缺失时按 .env 重建）。
#
set -euo pipefail

_OCTOP_COMMON="$(dirname "$0")/common.sh"
[ -f "$_OCTOP_COMMON" ] || _OCTOP_COMMON="/var/apps/octop-native/cmd/common.sh"
[ -f "$_OCTOP_COMMON" ] && source "$_OCTOP_COMMON"

PKGVAR="${TRIM_PKGVAR:-/var/apps/octop-native/var}"
APPDEST="${TRIM_APPDEST:-/var/apps/octop-native}"
ENV_FILE="$PKGVAR/.env"

if [ -n "${TRIM_DATA_SHARE_PATHS:-}" ]; then
    DATA_DIR="${TRIM_DATA_SHARE_PATHS%%:*}"
else
    DATA_DIR="${APPDEST}/shares/octop-native/data"
fi

ADMIN_USER="$(octop_env_get "$ENV_FILE" OCTOP_ADMIN_USERNAME)"
ADMIN_PASS="$(octop_env_get "$ENV_FILE" OCTOP_DEFAULT_PASSWORD)"
[ -n "$ADMIN_USER" ] || ADMIN_USER="admin"

if [ -n "$ADMIN_PASS" ]; then
    # 「设置」窗口当前密码显示刷新
    WIZARD_TEMPLATE="$APPDEST/wizard/config.template"
    WIZARD_DIR="$(dirname "$APPDEST")/wizard"
    [ -f "$WIZARD_TEMPLATE" ] || WIZARD_TEMPLATE="${APPDEST}/../wizard/config"
    octop_render_config_wizard "$WIZARD_TEMPLATE" "$WIZARD_DIR" "$ADMIN_USER" "$ADMIN_PASS"
    # 回落备份缺失时按 .env 重建（存在则不动，尊重用户在 Web 内改过的密码）
    if [ -d "$DATA_DIR" ] && [ ! -f "${DATA_DIR}/octop-login.txt" ]; then
        octop_write_login_file "$DATA_DIR" "$ADMIN_USER" "$ADMIN_PASS" 8089
    fi
fi

exit 0
