### Generic variables and functions
### -------------------------------

if [ -z "${SYNOPKG_PKGNAME}" ] || [ -z "${SYNOPKG_DSM_VERSION_MAJOR}" ]; then
  echo "Error: Environment variables are not set." 1>&2;
  echo "Please run me using synopkg instead. Example: \"synopkg start [packagename]\"" 1>&2;
  exit 1
fi

USER="arc-control"
EFF_USER="sc-arc-control"

# DSM shared folder location from UI if provided
if [ -n "${wizard_download_dir}" ]; then SHARE_PATH="${wizard_download_dir}"; SHARE_WORKER=0; fi

### Package specific variables and functions
### ----------------------------------------

PYTHON_DIR="/var/packages/python311/target/bin"
PACKAGE="arc-control"
PATH="${SYNOPKG_PKGDEST}/env/bin:${SYNOPKG_PKGDEST}/bin:${SYNOPKG_PKGDEST}/usr/bin:${PYTHON_DIR}:${PATH}"
CFG_FILE="${SYNOPKG_PKGDEST}/app/config.txt"

service_postinst ()
{
    separator="===================================================="

    echo ${separator}
    install_python_virtualenv

    echo ${separator}
    install_python_wheels

    echo ${separator}
    echo "Install packages to the app/libs folder"
    ${SYNOPKG_PKGDEST}/env/bin/pip install --target ${SYNOPKG_PKGDEST}/app/scripts/libs/ -r ${SYNOPKG_PKGDEST}/share/wheelhouse/requirements.txt
}

service_preupgrade ()
{
    # Save configuration files
    rm -rf ${SYNOPKG_TEMP_UPGRADE_FOLDER}/${PACKAGE}
    mkdir -p ${SYNOPKG_TEMP_UPGRADE_FOLDER}/${PACKAGE}

    # Save package config
    mv "${CFG_FILE}" "${SYNOPKG_TEMP_UPGRADE_FOLDER}/${PACKAGE}/config.txt"
}

service_postupgrade ()
{
    rm -f "${CFG_FILE}"
    # Restore package config
    mv "${SYNOPKG_TEMP_UPGRADE_FOLDER}/${PACKAGE}/config.txt" "${CFG_FILE}"
    touch /tmp/arc_control_installed
    rm -rf ${SYNOPKG_TEMP_UPGRADE_FOLDER}/${PACKAGE}
}

# Uninstall the package does not remove the tasks from the scheduler due to lack of permissions
service_postuninst ()
{
    /usr/bin/arcsu echo "DELETE FROM task WHERE task_name='RunArcUpdate'" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db
    /usr/bin/arcsu echo "DELETE FROM task WHERE task_name='RunArcConfig'" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db
    /usr/bin/arcsu echo "DELETE FROM task WHERE task_name='RunArcBuild'" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db
    /usr/bin/arcsu echo "DELETE FROM task WHERE task_name='ApplyArcConfig'" | sqlite3 /usr/syno/etc/esynoscheduler/esynoscheduler.db
}