#!/bin/sh
# synopkgland: the SDK steps run in synopkgland_sdk; the App's dsm-scripts/preuninst runs from scripts/app/preuninst.
synopkgland_sdk() (
stop_background_worker() {
  /usr/syno/bin/synosystemctl stop pkguser-SynoPkgGopeed-background.service && return 0
  # DSM's native uninstall stops the unit, then releases the package user's
  # systemd manager before preuninst, so a repeated stop fails. That is only
  # "already stopped" when no process runs the worker executable.
  [ -d /proc/self ] || return 1
  worker="$(readlink -f "${SYNOPKG_PKGDEST:-/var/packages/SynoPkgGopeed/target}/background/worker")" || return 1
  for exe in /proc/[0-9]*/exe; do
    case "$(readlink "$exe" 2>/dev/null)" in
      "$worker"|"$worker (deleted)") echo "background worker still running" >&2; return 1 ;;
    esac
  done
  echo "background worker already stopped" >&2
}
if [ "${SYNOPKG_PKG_STATUS:-}" = UPGRADE ]; then
result=0
stop_background_worker || result=1
"/var/packages/SynoPkgGopeed/target/daemon/control" stop "${SYNOPKG_PKGDEST:-/var/packages/SynoPkgGopeed/target}" "${SYNOPKG_PKGVAR:-/var/packages/SynoPkgGopeed/var}" || result=1
"${SYNOPKG_PKGDEST:-/var/packages/SynoPkgGopeed/target}/executor/lifecycle" stop --package SynoPkgGopeed || result=1
exit "$result"
fi
result=0
stop_background_worker || result=1
"/var/packages/SynoPkgGopeed/target/daemon/control" stop "${SYNOPKG_PKGDEST:-/var/packages/SynoPkgGopeed/target}" "${SYNOPKG_PKGVAR:-/var/packages/SynoPkgGopeed/var}" || result=1
"${SYNOPKG_PKGDEST:-/var/packages/SynoPkgGopeed/target}/executor/lifecycle" purge --package SynoPkgGopeed || result=1
exit "$result"
)
synopkgland_app="$(dirname "$0")/app/preuninst"
"$synopkgland_app" "$@" || exit $?
synopkgland_sdk "$@"
