Merge pull request #2271 from alexbelgium/codex/fix-issue-#2270-on-github

Handle existing transcode symlink in Jellyfin add-on
This commit is contained in:
Alexandre
2025-12-13 20:13:41 +01:00
committed by GitHub
4 changed files with 54 additions and 40 deletions

View File

@@ -1,3 +1,6 @@
## 10.11.4-1 (07-12-2025)
- Avoid deleting the configured data directory when it matches the legacy path while rebuilding symlinks.
## breaking_versions: 10.11.4 (06-12-2025) ## breaking_versions: 10.11.4 (06-12-2025)
- Minor bugs fixed - Minor bugs fixed

View File

@@ -125,5 +125,5 @@ schema:
slug: jellyfin slug: jellyfin
udev: true udev: true
url: https://github.com/alexbelgium/hassio-addons url: https://github.com/alexbelgium/hassio-addons
version: "10.11.4" version: "10.11.4-1"
video: true video: true

View File

@@ -3,6 +3,40 @@
set -e set -e
LOCATION=$(bashio::config 'data_location') LOCATION=$(bashio::config 'data_location')
PUID=$(bashio::config "PUID")
PGID=$(bashio::config "PGID")
create_link() {
local target_dir="$1"
local link_path="$2"
local target_real
local link_real
target_real=$(realpath -m "$target_dir")
link_real=$(realpath -m "$link_path")
mkdir -p "$target_dir"
mkdir -p "$(dirname "$link_path")"
# If the link path is the same as the target, just ensure ownership and exit
if [ "$target_real" = "$link_real" ]; then
chown -R "$PUID:$PGID" "$target_dir"
return
fi
if [ -L "$link_path" ]; then
rm "$link_path"
elif [ -d "$link_path" ]; then
cp -a "$link_path/." "$target_dir/" || true
rm -r "$link_path"
elif [ -e "$link_path" ]; then
rm "$link_path"
fi
ln -sfn "$target_dir" "$link_path"
chown -R "$PUID:$PGID" "$target_dir"
}
# Check if config is located in an acceptable location # Check if config is located in an acceptable location
LOCATIONOK="" LOCATIONOK=""
@@ -45,50 +79,25 @@ fi
# links # links
if [ ! -d /jellyfin/cache ]; then echo "Creating link for /jellyfin/cache"
echo "Creating link for /jellyfin/cache" create_link "$LOCATION/cache" /jellyfin/cache
mkdir -p "$LOCATION"/cache
chown -R "$PUID:$PGID" "$LOCATION"/cache
ln -s "$LOCATION"/cache /jellyfin/cache
fi
if [ ! -d /jellyfin/data ]; then echo "Creating link for /jellyfin/data"
echo "Creating link for /jellyfin/data" create_link "$LOCATION/data" /jellyfin/data
mkdir -p "$LOCATION"/data
chown -R "$PUID:$PGID" "$LOCATION"/data
ln -s "$LOCATION"/data /jellyfin/data
fi
if [ ! -d /jellyfin/log ]; then echo "Creating link for /jellyfin/log"
echo "Creating link for /jellyfin/log" create_link "$LOCATION/log" /jellyfin/log
mkdir -p "$LOCATION"/log
chown -R "$PUID:$PGID" "$LOCATION"/log
ln -s "$LOCATION"/log /jellyfin/log
fi
if [ ! -d /jellyfin/metadata ]; then echo "Creating link for /jellyfin/metadata"
echo "Creating link for /jellyfin/metadata" create_link "$LOCATION/metadata" /jellyfin/metadata
mkdir -p "$LOCATION"/metadata
chown -R "$PUID:$PGID" "$LOCATION"/metadata
ln -s "$LOCATION"/metadata /jellyfin/metadata
fi
if [ ! -d /jellyfin/plugins ]; then echo "Creating link for /jellyfin/plugins"
echo "Creating link for /jellyfin/plugins" create_link "$LOCATION/plugins" /jellyfin/plugins
mkdir -p "$LOCATION"/plugins
chown -R "$PUID:$PGID" "$LOCATION"/plugins
ln -s "$LOCATION"/plugins /jellyfin/plugins
fi
if [ ! -d /jellyfin/root ]; then echo "Creating link for /jellyfin/root"
echo "Creating link for /jellyfin/root" create_link "$LOCATION/root" /jellyfin/root
mkdir -p "$LOCATION"/root
chown -R "$PUID:$PGID" "$LOCATION"/root
ln -s "$LOCATION"/root /jellyfin/root
fi
# Legacy mode # Legacy mode
echo "Enable legacy mode" echo "Enable legacy mode"
mkdir -p /config/addons_config create_link "$LOCATION" /config/addons_config/jellyfin
ln -sf "$LOCATION" /config/addons_config/jellyfin
chown -R "$PUID:$PGID" "$LOCATION" chown -R "$PUID:$PGID" "$LOCATION"

View File

@@ -30,8 +30,10 @@ mkdir -p /data/transcodes
if [ -d "$LOCATION"/data/transcodes ]; then if [ -d "$LOCATION"/data/transcodes ]; then
cp -rT "$LOCATION"/data/transcodes /data/transcodes || true cp -rT "$LOCATION"/data/transcodes /data/transcodes || true
rm -r "$LOCATION"/data/transcodes rm -r "$LOCATION"/data/transcodes
elif [ -L "$LOCATION"/data/transcodes ]; then
rm "$LOCATION"/data/transcodes
fi fi
ln -s /data/transcodes "$LOCATION"/data/transcodes ln -sfn /data/transcodes "$LOCATION"/data/transcodes
chown -R "$PUID":"$PGID" /data/transcodes chown -R "$PUID":"$PGID" /data/transcodes
# Permissions # Permissions