#!/bin/bash
#
# shellcheck disable=SC1090,SC2220,SC2207

ROON=/usr/local/Roon
ROONAPI=${ROON}/api
ROONCONF=${ROON}/etc/pyroonconf
SCRIPT="zone_command.py"

[ -f ${ROONAPI}/${SCRIPT} ] || {
    echo "Roon Command Line scripts not installed. Missing ${ROONAPI}/$SCRIPT"
    exit 1
}
cd ${ROONAPI} || exit 1

# Verify this is a valid zone name
[ "$1" ] || {
    echo "No zone specified on command line. Exiting."
    exit 1
}
MY_ZONE="$*"

# Use a Python virtual environment
[ -f ${ROON}/venv/bin/activate ] && source ${ROON}/venv/bin/activate
[[ ":$PATH:" == *":/usr/local/Roon/venv/bin:"* ]] || {
  export PATH=/usr/local/Roon/venv/bin:${PATH}
}

have_python3=$(type -p python3)
if [ "${have_python3}" ]
then
    ZONE=$(python3 $SCRIPT -c "verify" -z "$MY_ZONE")
else
    ZONE=$(python $SCRIPT -c "verify" -z "$MY_ZONE")
fi

[ "$ZONE" ] || {
    echo "No zone matching $MY_ZONE"
    exit 1
}

# Check the global site directories
PYTHONUSERBASE=
if [ "${have_python3}" ]
then
    SITES=($(python3 -c 'import site; print(site.getsitepackages())' | tr -d '[],'))
else
    SITES=($(python -c 'import site; print(site.getsitepackages())' | tr -d '[],'))
fi
for site in ${SITES[@]}
do
    site=$(echo "${site}" | sed -e "s/\'//g")
    [ -d "${site}/roonapi" ] && {
        PYTHONUSERBASE=$(echo "${site}" | awk -F "/lib/" ' { print $1 } ')
        break
    }
done

if [ -f $ROONCONF ]
then
    grep -v ^ROON_ZONE $ROONCONF > /tmp/roonconf$$
    echo "ROON_ZONE=\"$ZONE\"" >> /tmp/roonconf$$
    cp /tmp/roonconf$$ $ROONCONF
    rm -f /tmp/roonconf$$
    [ "$PYTHONUSERBASE" ] && {
      grep PYTHONUSERBASE $ROONCONF > /dev/null || {
        echo "export PYTHONUSERBASE=$PYTHONUSERBASE" >> $ROONCONF
      }
    }
else
    echo "ROON_ZONE=\"$ZONE\"" > $ROONCONF
    [ "$PYTHONUSERBASE" ] && {
      echo "export PYTHONUSERBASE=$PYTHONUSERBASE" >> $ROONCONF
    }
fi

exit 0
