#!/bin/bash
set -euo pipefail

SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
INSTALL_PATH=$(cd "${SCRIPT_DIR}/../../.." && pwd)

PACKAGE_NAME="affinity-sched"
PACKAGE_DIR="affinity_sched"
SITE_PACKAGES="${INSTALL_PATH}/python/site-packages"

_msboost_log() {
    local level="$1"
    shift
    local msg="$*"
    local ts
    ts=$(date "+%Y-%m-%d %H:%M:%S")
    if [[ "${level}" == "ERROR" || "${level}" == "WARNING" ]]; then
        echo "[msboost][${ts}][${level}]: ${msg}" >&2
    else
        echo "[msboost][${ts}][${level}]: ${msg}"
    fi
}

log_info() { _msboost_log "INFO" "$@"; }
log_warning() { _msboost_log "WARNING" "$@"; }
log_error() { _msboost_log "ERROR" "$@"; }

log_info "Starting uninstallation of ${PACKAGE_NAME}"

REMOVED=0

for dist_info in "${SITE_PACKAGES}"/${PACKAGE_DIR}-*.dist-info; do
    if [[ -d "${dist_info}" ]]; then
        RECORD="${dist_info}/RECORD"
        if [[ -f "${RECORD}" ]]; then
            while IFS= read -r line; do
                filepath="${line%%,*}"
                full_path="${SITE_PACKAGES}/${filepath}"
                if [[ -e "${full_path}" ]]; then
                    rm -f "${full_path}"
                    REMOVED=1
                fi
            done < "${RECORD}"
        fi
        rm -rf "${dist_info}"
        REMOVED=1
    fi
done

PKG_DIR="${SITE_PACKAGES}/${PACKAGE_DIR}"
if [[ -d "${PKG_DIR}" ]]; then
    rm -rf "${PKG_DIR}"
    REMOVED=1
fi

if [[ ${REMOVED} -eq 0 ]]; then
    log_warning "Package ${PACKAGE_NAME} not found in ${SITE_PACKAGES}"
fi

INFO_DIR="${INSTALL_PATH}/share/info/msboost"
rm -f "${INFO_DIR}/version.info" "${INFO_DIR}/uninstall.sh"
if [[ -d "${INFO_DIR}" ]] && [[ -z "$(ls -A "${INFO_DIR}" 2>/dev/null)" ]]; then
    rmdir "${INFO_DIR}"
fi

CANN_UNINSTALL="${INSTALL_PATH}/cann_uninstall.sh"
ENTRY='uninstall_package "share/info/msboost"'
if [[ -f "${CANN_UNINSTALL}" ]]; then
    NEED_RESTORE=0
    ORIG_PERM=$(stat -c "%a" "${CANN_UNINSTALL}")
    if [[ ! -w "${CANN_UNINSTALL}" ]]; then
        chmod +w "${CANN_UNINSTALL}"
        NEED_RESTORE=1
    fi
    if [[ ${NEED_RESTORE} -eq 1 ]]; then
        restore_cann_uninstall_perm() {
            chmod "${ORIG_PERM}" "${CANN_UNINSTALL}" 2>/dev/null || true
        }
        trap restore_cann_uninstall_perm EXIT
    fi
    sed -i "\|^${ENTRY}$|d" "${CANN_UNINSTALL}"
    if [[ ${NEED_RESTORE} -eq 1 ]]; then
        trap - EXIT
        restore_cann_uninstall_perm
    fi
fi

log_info "Uninstallation completed successfully"