#!/bin/bash

if [[ $EUID -ne 0 ]]; then
    sudo "$0" "$@"
    exit $?
fi

EGPU_UNINSTALL_LOG=/var/log/egpu_uninstall.log

unins_log () {
  echo `date +'[%Y-%m-%d %H:%M:%S]'` ">> egpu_uninstaller:" $1 | tee -a $EGPU_UNINSTALL_LOG
}

uninstall_egpu() {
  rm -f $EGPU_UNINSTALL_LOG
  rmmod egpu_scheduler | ts $EGPU_UNINSTALL_LOG
  if [ ${PIPESTATUS[0]} -eq 0 ]; then
    unins_log "egpu uninstalled successfully."
  else
    unins_log "Remove egpu_scheduler encounters errors, see $EGPU_UNINSTALL_LOG for details."
    exit 1
  fi
  
  rmmod egpu | ts $EGPU_UNINSTALL_LOG
  if [ ${PIPESTATUS[0]} -eq 0 ]; then
    unins_log "egpu uninstalled successfully."
  else
    unins_log "Remove egpu encounters errors, see $EGPU_UNINSTALL_LOG for details."
    exit 1
  fi
}

rollback_user_tools() {
  rm -rf /usr/bin/nvidia-container-runtime-hook
  mv -f /usr/bin/nvidia-container-runtime-hook_nv /usr/bin/nvidia-container-runtime-hook
  #ln -s /usr/bin/nvidia-container-toolkit /usr/bin/nvidia-container-runtime-hook
  rm -rf /usr/bin/mount_egpu
}


uninstall_insmod_ko_service() {
  systemctl disable egpu_insmod_ko.service 
  rm -rf /usr/bin/egpu_insmod_ko.sh
  rm -rf /usr/lib/systemd/system/egpu_insmod_ko.service
}

if lsmod | grep -q egpu; then
  uninstall_egpu
else
  unins_log "egpu not installed, no need to uninstall egpu."
fi



rollback_user_tools

uninstall_insmod_ko_service
rm -rf $(which egpu_uninstaller)
