#!/bin/bash
# prerm script for #PACKAGE#
#
# see: dh_installdeb(1)

set -e

# Begin vars.sh
#!/bin/bash
# DO NOT EDIT
# This file is regenerated each run.
# If you want to add or change a variable, edit debify/settings.json and the vars hashref

source /etc/os-release
export OBS_REPO="x${NAME}_${VERSION_ID}"
if ls debian/*.install &> /dev/null; then
    perl -pi -e 's/\${env:OBS_REPO}/$ENV{OBS_REPO}/' debian/*.install
fi

export DEB_INSTALL_ROOT="/usr/src/packages/BUILD/debian/tmp"
export DEB_SOURCE_ROOT="/usr/src/packages/BUILD/debian/SOURCES_FROM_SPEC"
export RPM_SOURCE_DIR="/usr/src/packages/BUILD/debian/SOURCES_FROM_SPEC"
export __isa_bits="64"
export __isa_name="x86"
export __sourcedir=""
export _bindir="/opt/cpanel//root/usr/bin"
export _datadir="/opt/cpanel//root/usr/share"
export _defaultdocdir="/opt/cpanel//root/usr/share/doc"
export _docdir="/opt/cpanel//root/usr/share/doc"
export _exec_prefix="/opt/cpanel//root/usr"
export _includedir="/opt/cpanel//root/usr/include"
export _infodir="/opt/cpanel//root/usr/share/info"
export _isa=""
export _lib="lib64"
export _libdir="/opt/cpanel//root/usr/lib64"
export _libexecdir="/opt/cpanel//root/usr/libexec"
export _localstatedir="/opt/cpanel//root/var"
export _mandir="/opt/cpanel//root/usr/share/man"
export _prefix="/opt/cpanel//root/usr"
export _root_bindir="/opt/cpanel//root/usr/bin"
export _root_datadir="/opt/cpanel//root/usr/share"
export _root_exec_prefix="/opt/cpanel//root/usr"
export _root_includedir="/opt/cpanel//root/usr/include"
export _root_infodir="/opt/cpanel//root/usr/share/info"
export _root_initddir="/opt/cpanel//root/etc/rc.d/init.d"
export _root_libdir="/opt/cpanel//root/usr/lib64"
export _root_libexecdir="/opt/cpanel//root/usr/libexec"
export _root_localstatedir="/opt/cpanel//root/var"
export _root_mandir="/opt/cpanel//root/usr/share/man"
export _root_prefix="/opt/cpanel//root/usr"
export _root_sbindir="/opt/cpanel//root/usr/sbin"
export _root_sharedstatedir="/opt/cpanel//root/usr/com"
export _root_sysconfdir="/opt/cpanel//root/etc"
export _sbindir="/opt/cpanel//root/usr/sbin"
export _scl_prefix="/opt/cpanel"
export _scl_root="/opt/cpanel//root"
export _sysconfdir="/opt/cpanel//root/etc"
export _unitdir="/usr/lib/systemd/system"
export ai_advisor_version="1.60"
export buildroot="/usr/src/packages/BUILD"
export full_package_name="cpanel-ai-advisor-1.60"
export ix86="i386"
export name="cpanel-ai-advisor"
export nil="0"
export ns_name="ea"
export pkg=""
export pkg_name=""
export pkgname=""
export previous_version="1.59"
export release="1"
export release_prefix="1"
export scl=""
export scl_name=""
export scl_name_base=""
export scl_name_version=""
export scl_prefix=""
export version="1.60"
export version_with_debian_revision="1.60-1"
export SOURCE1="$DEB_SOURCE_ROOT/pkg.preinst"
export SOURCE2="$DEB_SOURCE_ROOT/pkg.postinst"
export SOURCE3="$DEB_SOURCE_ROOT/pkg.prerm"
export SOURCE4="$DEB_SOURCE_ROOT/pkg.postrm"
# End vars.sh

# summary of how this script can be called:
#        * <prerm> `remove'
#        * <old-prerm> `upgrade' <new-version>
#        * <new-prerm> `failed-upgrade' <old-version>
#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
#        * <deconfigured's-prerm> `deconfigure' `in-favour'
#          <package-being-installed> <version> `removing'
#          <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package


case "$1" in
    remove|upgrade|deconfigure)
    ;;

    failed-upgrade)
    ;;

    *)
        echo "prerm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Contents of SOURCES/pkg.prerm
#!/bin/bash

# Only run on remove, not upgrade.
# RPM: $1 = 0 for uninstall, 1 for upgrade
# Debian: $1 = "remove" or "purge" for uninstall, "upgrade" for upgrade
if [[ "$1" == "0" || "$1" == "remove" || "$1" == "purge" ]]; then
    # Remove addonfeatures entries (Feature Manager registration).
    rm -f /usr/local/cpanel/whostmgr/addonfeatures/ai-assistant
    rm -f /usr/local/cpanel/whostmgr/addonfeatures/ai-assistant-actions

    # Migration cleanup: earlier builds (CPANEL-54524) registered the assistant
    # as a Cpanel::Component in /var/cpanel/plugins/config.json and symlinked a
    # ConfigObj driver + META + Config.pm into the ULC tree. Undo those so an
    # upgrade-then-remove from that era leaves nothing behind.
    PLUGINS_CONF="/var/cpanel/plugins/config.json"
    if [ -s "$PLUGINS_CONF" ]; then
        /usr/local/cpanel/3rdparty/bin/perl -MCpanel::JSON -e '''
            my $f = shift;
            my $d = eval { Cpanel::JSON::LoadFile($f) };    # undef on parse failure -> left untouched
            if ( ref $d eq q{HASH} ) { delete $d->{q{ai-assistant}}; Cpanel::JSON::DumpFile( $f, $d ); }
        ''' "$PLUGINS_CONF"
    fi
    remove_our_symlink() {
        local link="$1"
        local target="$2"
        if [ -L "$link" ] && [ "$(readlink "$link")" = "$target" ]; then
            rm -f "$link"
        fi
    }
    remove_our_symlink /usr/local/cpanel/Cpanel/Config/ConfigObj/Driver/AiAssistant.pm      /var/cpanel/perl/Cpanel/Config/ConfigObj/Driver/AiAssistant.pm
    remove_our_symlink /usr/local/cpanel/Cpanel/Config/ConfigObj/Driver/AiAssistant/META.pm /var/cpanel/perl/Cpanel/Config/ConfigObj/Driver/AiAssistant/META.pm
    rmdir /usr/local/cpanel/Cpanel/Config/ConfigObj/Driver/AiAssistant 2>/dev/null || true
    remove_our_symlink /usr/local/cpanel/Cpanel/AI/Config.pm /var/cpanel/perl/Cpanel/AI/Config.pm

    # Remove UAPI symlink
    rm -f /usr/local/cpanel/Cpanel/API/AIAssistant.pm

    # Remove AIAssistant AdminBin symlink
    rm -f /usr/local/cpanel/Cpanel/Admin/Modules/Cpanel/ai_assistant.pm

    # Remove AIAssistant SSE endpoint symlink
    rm -f /usr/local/cpanel/Cpanel/Server/SSE/cpanel/AIAssistant.pm

    # Clean up cache and proposals. Preserve gateway.json (connection settings
    # only; any secret lives in the 0600 server_token) and server_token itself
    # so admin config survives a package removal/reinstall.
    rm -rf /var/cpanel/ai/cache /var/cpanel/ai/proposals
fi
# End SOURCES/pkg.prerm


exit 0
