#!/bin/bash # Mock für find - steuert Datei-Erkennung # - Bei Versions-Erkennung: simulierte Pfade aus State # - Bei Cleanup mit -delete: echte Dateien löschen MOCK_DIR="$(cd "$(dirname "$0")/../fixtures" && pwd)" MOCK_STATE_FILE="${MOCK_DIR}/find_state" # Echten find über absoluten Pfad aufrufen (vermeidet Rekursion über PATH) REAL_FIND="" for candidate in /usr/bin/find /bin/find /usr/local/bin/find; do if [[ -x "$candidate" ]]; then resolved="$(readlink -f "$candidate" 2>/dev/null || echo "$candidate")" [[ "$resolved" != *test/mocks* ]] && REAL_FIND="$candidate" && break fi done [[ -z "$REAL_FIND" ]] && REAL_FIND="/usr/bin/find" if [[ -f "${MOCK_STATE_FILE}" ]]; then # shellcheck source=/dev/null source "${MOCK_STATE_FILE}" fi # Defaults FIND_INSTALLED_VERSION="${FIND_INSTALLED_VERSION:-}" FIND_FILES=() # State parsen: FIND_FILES="file1|file2|file3" if [[ -n "${FIND_FILES_RAW}" ]]; then IFS='|' read -ra FIND_FILES <<< "${FIND_FILES_RAW}" fi # Bei -delete: echte find-Operation auf das Zielverzeichnis ausführen # (löscht echte Dateien im Test-HOME) if [[ "$*" == *"-delete"* ]]; then "$REAL_FIND" "$@" exit $? fi # Prüfen ob wir nach AppImages suchen (Versions-Erkennung) if [[ "$*" == *"Logseq-linux-x64-*.AppImage"* ]] || [[ "$*" == *"Logseq-\*AppImage"* ]]; then if [[ -n "${FIND_INSTALLED_VERSION}" ]]; then # Simuliere installierte Version echo "${MOCK_DIR}/Logseq-linux-x64-${FIND_INSTALLED_VERSION}.AppImage" elif [[ ${#FIND_FILES[@]} -gt 0 ]]; then for f in "${FIND_FILES[@]}"; do echo "${MOCK_DIR}/${f}" done fi exit 0 fi # Fallback: echtes find aufrufen (für update-desktop-database etc.) "$REAL_FIND" "$@"