45 lines
1.7 KiB
Bash
Executable File
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
|