#!/bin/bash

#
# Name:		relocate-plex
# Version:      1.0.0
#
# (c) 2023, Rapidseedbox, alexey@rapidseedbox.com
#

SC_NAME="$( basename "${0}" )"
_VER="$( grep -m 1 -E '^#\s*Version:\s+' "${0}" | awk '{print $NF}' )"
PLEX_HOME="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server"

#
# -- Sanity checks
#
if ! mountpoint "/data" > /dev/null ; then
    >&2 echo "/data is not a mountpoint."
    exit 1
fi
if ! id "plex" > /dev/null 2>&1 ; then
    >&2 echo "plex: System account not found."
    exit 1
fi
if [ ! -e "${PLEX_HOME}" ] ; then
    >&2 echo "${PLEX_HOME}: Not found."
    exit 1
fi
if [ -L "${PLEX_HOME}" ] ; then
    >&2 echo "${PLEX_HOME} is a symlink to $( readlink -f "${PLEX_HOME}" )"
    exit 1
fi

# -- Stop `plexmediaserver` if necessary
_need_restart="no"
if systemctl is-active "plexmediaserver" > /dev/null 2>&1 ; then
    systemctl stop "plexmediaserver"
    _need_restart="yes"
fi

# -- Move PLEX directory
[ -d "/data/apps.data" ] || mkdir -vp "/data/apps.data"
mv -f "${PLEX_HOME}" "/data/apps.data/"
[ -d "${PLEX_HOME}" ] && rm -rf "${PLEX_HOME}"

# -- Create symlink
ln -svf "/data/apps.data/Plex Media Server" "${PLEX_HOME}"

# -- Restart `plexmediaserver` if necessary
if [ "${_need_restart}" = "yes" ] ; then
    systemctl restart "plexmediaserver"
fi


exit 0
