60 lines
1.3 KiB
Bash
60 lines
1.3 KiB
Bash
#!/usr/bin/env sh
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
PREFERENCES="/var/lib/plex/Plex Media Server/Preferences.xml"
|
|
TEMPLATE_PREFERENCES="/etc/plex/Preferences.xml"
|
|
|
|
getPref() {
|
|
xmlstarlet sel -t -v "/Preferences/@$1" "$PREFERENCES" 2>/dev/null || true
|
|
}
|
|
|
|
setPref() {
|
|
name="$1"
|
|
value="$2"
|
|
|
|
xmlstarlet ed --inplace \
|
|
-d "/Preferences/@${name}" \
|
|
-i "/Preferences" -t attr -n "${name}" -v "${value}" \
|
|
"$PREFERENCES"
|
|
}
|
|
|
|
mkdir -p "$(dirname "$PREFERENCES")"
|
|
if [ ! -f "$PREFERENCES" ]; then
|
|
echo '<?xml version="1.0" encoding="utf-8"?><Preferences/>' > "$PREFERENCES"
|
|
fi
|
|
|
|
if [ -f "$TEMPLATE_PREFERENCES" ]; then
|
|
ATTRS="$(xmlstarlet sel -t -m "/Preferences/@*" -v "concat(name(),'=',.)" -n "$TEMPLATE_PREFERENCES")"
|
|
|
|
if [ -n "$ATTRS" ]; then
|
|
set --
|
|
|
|
while IFS='=' read -r name value; do
|
|
[ -z "$name" ] && continue
|
|
set -- "$@" -d "/Preferences/@${name}"
|
|
set -- "$@" -i "/Preferences" -t attr -n "${name}" -v "${value}"
|
|
done <<EOF
|
|
$ATTRS
|
|
EOF
|
|
|
|
if [ "$#" -gt 0 ]; then
|
|
xmlstarlet ed --inplace "$@" "$PREFERENCES"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
rm -f "/var/lib/plex/Plex Media Server/plexmediaserver.pid"
|
|
plexmediaserver &
|
|
PID="$!"
|
|
|
|
if [ -f /etc/plex/post-start.sh ]; then
|
|
# shellcheck disable=SC1091
|
|
. /etc/plex/post-start.sh
|
|
fi
|
|
|
|
trap 'kill -QUIT "$PID"' INT TERM
|
|
wait "$PID"
|
|
exit $?
|