53 lines
1.7 KiB
Bash
Executable File
53 lines
1.7 KiB
Bash
Executable File
#!/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="/home/tim/Dokumente/Sourcen/Logseq-Installer/test/fixtures"
|
|
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" "$@" |