Files
imagefind/fnos/cmd/upgrade_callback
T

45 lines
1.7 KiB
Bash
Executable File

#!/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