#!/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" # shellcheck disable=SC2317 getPref() { xmlstarlet sel -t -v "/Preferences/@$1" "$PREFERENCES" 2>/dev/null || true } # shellcheck disable=SC2317 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 '' > "$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 <