c3e77b07创建于 2025年12月23日历史提交
#!/bin/bash
USERNAME=$(id -un)
USERGROUP=$(id -gn)

SHELL_DIR=$(cd "$(dirname "$0")" || exit; pwd)
COMMON_PARSER_PATH=${SHELL_DIR}"/parser_install.sh"
COMMON_SHELL_PATH=${SHELL_DIR}"/common.sh"
FILELIST_CSV_PATH=${SHELL_DIR}"/filelist.csv"


function print_usage() {
    local _ret=$1

    echo "Usage: $0 [Options]"
    echo "Options:"
    echo "    --help | -h   : Print out this help message"
    echo "    --quiet       : Quiet uninstall mode, skip human-computer interactions"
    exit ${_ret}
}

function real_install_path() {
    if [ ! -f ${install_file} ]; then
        log_and_print $LEVEL_WARN "Install file ${install_file} doesn't exist."
        return 1
    fi
    install_path=$(get_install_param "Install_Path_Param" ${install_file})
    if [ -z "${install_path}" ]; then
        log_and_print $LEVEL_WARN "Install path is empty from 'ascend_install.info'."
        return 1
    fi
    install_path=$(cd "${install_path}" && pwd)
    if [ $? -ne 0 ]; then
        log_and_print $LEVEL_WARN "Install path ${install_path} doesn't exist which read from 'ascend_install.info'."
        return 1
    fi
    local _path=$(dirname ${install_path})
    return 0
}

function check_dir_permission() {
    local _path=$1

    if [ -z ${_path} ]; then
        log_and_print $LEVEL_ERROR "The dir path is empty, uninstall failed."
        exit_log 1
    fi
    if [ ! -d "${_path}" ]; then
        log_and_print $LEVEL_ERROR "The dir path ${_path} does not exist, uninstall failed."
        exit_log 1
    fi
    if [ "$(id -u)" -eq 0 ]; then
        return
    fi
    if [ ! -r ${_path} ] || [ ! -w ${_path} ] || [ ! -x ${_path} ]; then
        log_and_print $LEVEL_ERROR "The user $USERNAME should have read, write and executable permission for ${_path}."
        exit_log 1
    fi
}

function uninstall() {
    install_file=$(cd ${SHELL_DIR}"/.." && pwd)/ascend_install.info

    real_install_path
    [ $? -ne 0 ] && return 1
    check_dir_permission ${install_path}
    check_dir_permission ${install_path}/share/info/mindstudio-debugger

    uninstall_tool
    if [ $? -ne 0 ]; then
        log_and_print ${LEVEL_ERROR} "${MODULE_NAME} uninstall failed."
        return 1
    fi
    rm -f ${install_file}

    remove_uninstall_file_if_no_content ${install_path}/cann_uninstall.sh
    
    remove_empty_dir ${install_path}/share/info/mindstudio-debugger
    remove_empty_dir ${install_path}/share/info
    remove_empty_dir ${install_path}/share
    remove_empty_dir ${install_path}/${ARCH}-${OS}/include
    remove_empty_dir ${install_path}
    remove_empty_dir $(dirname ${install_path})
    log_and_print $LEVEL_INFO "${MODULE_NAME} uninstall success!"
}

source ${COMMON_SHELL_PATH}

install_file=""
quiet_flag=n

start_log

log_and_print $LEVEL_INFO "LogFile: $log_file"
log_and_print $LEVEL_INFO "InputParams: $*"

while true; do
    case "$1" in
    --quiet)
        quiet_flag=y
        shift
        ;;
    --help | -h)
        print_usage 0
        shift
        ;;
    -*)
        echo "Unsupported parameters: $1"
        print_usage 1
        ;;
    *)
        break
        ;;
    esac
done

uninstall
exit_log 0