mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-07-16 02:50:32 +02:00
Merge pull request #2650 from alexbelgium/copilot/fix-storage-folder-recognition
Fix Linkwarden STORAGE_FOLDER path resolution for persistent storage
This commit is contained in:
@@ -45,5 +45,5 @@ schema:
|
|||||||
STORAGE_FOLDER: str?
|
STORAGE_FOLDER: str?
|
||||||
slug: linkwarden
|
slug: linkwarden
|
||||||
url: https://github.com/alexbelgium/hassio-addons/tree/master/linkwarden
|
url: https://github.com/alexbelgium/hassio-addons/tree/master/linkwarden
|
||||||
version: "2.14.0"
|
version: "2.14.0-2"
|
||||||
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]"
|
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]"
|
||||||
|
|||||||
@@ -9,6 +9,43 @@ set -e
|
|||||||
bashio::log.info "Creating folders"
|
bashio::log.info "Creating folders"
|
||||||
mkdir -p "$STORAGE_FOLDER"
|
mkdir -p "$STORAGE_FOLDER"
|
||||||
|
|
||||||
|
# Upstream Linkwarden (packages/filesystem/*.ts) resolves STORAGE_FOLDER via:
|
||||||
|
# path.join(process.cwd(), '../..', STORAGE_FOLDER, filePath)
|
||||||
|
# The yarn workspace commands run from apps/web/ or apps/worker/, so
|
||||||
|
# process.cwd()/../.. resolves to the monorepo root /data_linkwarden.
|
||||||
|
# Node.js path.join treats absolute path segments as relative when they are not
|
||||||
|
# the first argument, so an absolute STORAGE_FOLDER like /config/library becomes
|
||||||
|
# /data_linkwarden/config/library instead of /config/library.
|
||||||
|
# This affects all filesystem operations: createFile, createFolder, readFile,
|
||||||
|
# moveFile, removeFile, removeFolder.
|
||||||
|
# Fix: symlink the top-level directory so all subpaths resolve correctly.
|
||||||
|
fix_linkwarden_path() {
|
||||||
|
local actual_path="$1"
|
||||||
|
local resolved_path="/data_linkwarden${actual_path}"
|
||||||
|
|
||||||
|
# Only needed for absolute paths that differ after prefixing
|
||||||
|
if [ "$resolved_path" = "$actual_path" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$resolved_path")"
|
||||||
|
|
||||||
|
# Preserve any data already written to the non-persistent path
|
||||||
|
if [ -d "$resolved_path" ] && [ ! -L "$resolved_path" ]; then
|
||||||
|
if ! cp -rn "$resolved_path/." "$actual_path/" 2>/dev/null; then
|
||||||
|
bashio::log.warning "Could not migrate existing data from $resolved_path to $actual_path (may be empty or a permissions issue)"
|
||||||
|
fi
|
||||||
|
rm -rf "$resolved_path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -sfn "$actual_path" "$resolved_path"
|
||||||
|
bashio::log.info "Symlinked $resolved_path -> $actual_path"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$STORAGE_FOLDER" == /* ]]; then
|
||||||
|
fix_linkwarden_path "$STORAGE_FOLDER"
|
||||||
|
fi
|
||||||
|
|
||||||
######################
|
######################
|
||||||
# CONFIGURE POSTGRES #
|
# CONFIGURE POSTGRES #
|
||||||
######################
|
######################
|
||||||
|
|||||||
Reference in New Issue
Block a user