#!/bin/bash set -eu 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 } case "${wizard_clear_data:-false}" in 1|true|TRUE|yes|YES|on|ON) ;; *) exit 0 ;; esac DATA_ROOT="${TRIM_PKGVAR:-}" [ -n "$DATA_ROOT" ] || fail "ImageFind 数据清理失败:fnOS 未提供应用数据目录。" [ -e "$DATA_ROOT" ] || exit 0 [ -d "$DATA_ROOT" ] || fail "ImageFind 数据清理失败:应用数据路径不是目录。" DATA_ROOT_REAL=$(readlink -f -- "$DATA_ROOT") || fail "ImageFind 数据清理失败:无法解析应用数据路径。" case "$DATA_ROOT_REAL" in ""|/|/home|/var|/var/apps) fail "ImageFind 数据清理失败:拒绝清理不安全的路径。" ;; esac [ "$(dirname -- "$DATA_ROOT_REAL")" != "/" ] || fail "ImageFind 数据清理失败:拒绝清理顶层目录。" [ -f "$DATA_ROOT_REAL/.imagefind-data-root" ] || fail "ImageFind 数据清理失败:应用数据目录缺少安全标记。" [ "$(sed -n '1p' "$DATA_ROOT_REAL/.imagefind-data-root")" = "imagefind-data-v1" ] || \ fail "ImageFind 数据清理失败:应用数据目录安全标记无效。" SCRIPT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) "$SCRIPT_ROOT/main" stop || fail "ImageFind 数据清理失败:无法停止应用服务。" # Only clear TRIM_PKGVAR. Shared video directories and user-authorized paths # live outside this directory and are deliberately never traversed here. find "$DATA_ROOT_REAL" -mindepth 1 -maxdepth 1 -exec rm -rf -- {} + || \ fail "ImageFind 数据清理失败:部分内部数据无法删除。"