#!/bin/bash set -eu DATA_ROOT="${TRIM_PKGVAR:-}" APP_ROOT="${TRIM_APPDEST:-}" COMMAND_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) # Password changes belong to ImageFind's authenticated account page. Older # upgrade wizards exported these variables, sometimes as placeholder strings # when both fields were left blank. Deliberately ignore them so a package # update can never fail after files have already been replaced. unset wizard_admin_password wizard_admin_password_confirm fail() { MESSAGE="$1" printf '%s\n' "$MESSAGE" >&2 if [ -n "${TRIM_TEMP_LOGFILE:-}" ]; then printf '%s\n' "$MESSAGE" >>"$TRIM_TEMP_LOGFILE" 2>/dev/null || true fi exit 1 } [ -n "$DATA_ROOT" ] || fail "ImageFind 升级失败:fnOS 未提供应用数据目录。" [ -n "$APP_ROOT" ] || fail "ImageFind 升级失败:fnOS 未提供应用安装目录。" umask 077 mkdir -p "$DATA_ROOT/data" "$DATA_ROOT/cache" if [ ! -f "$DATA_ROOT/.imagefind-data-root" ]; then printf '%s\n' 'imagefind-data-v1' >"$DATA_ROOT/.imagefind-data-root" fi if [ ! -f "$DATA_ROOT/access.json" ]; then ACCESS_TEMP="$DATA_ROOT/access.json.tmp.$$" printf '%s\n' '{"direct_access":{"enabled":true,"port":8765}}' >"$ACCESS_TEMP" chmod 0600 "$ACCESS_TEMP" mv "$ACCESS_TEMP" "$DATA_ROOT/access.json" fi if ! TRIM_APPDEST="$APP_ROOT" TRIM_PKGVAR="$DATA_ROOT" "$COMMAND_ROOT/runtime_bootstrap" \ >>"${TRIM_TEMP_LOGFILE:-/dev/null}" 2>&1; then fail "ImageFind 升级失败:Python 3.12 核心运行环境安装失败。" fi if [ -n "${TRIM_TEMP_LOGFILE:-}" ]; then printf '%s\n' "ImageFind 升级数据检查完成,现有数据库、配置和管理员密码均已保留。" \ >>"$TRIM_TEMP_LOGFILE" 2>/dev/null || true fi