69 lines
2.1 KiB
CMake
69 lines
2.1 KiB
CMake
function(ask_user_permission PROMPT_TEXT RESULT_VAR)
|
|
execute_process(COMMAND printf "${PROMPT_TEXT} [Y/n]: ")
|
|
|
|
execute_process(
|
|
COMMAND bash -c "read -n 1 -s -r; echo \"$REPLY\""
|
|
OUTPUT_VARIABLE USER_INPUT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
string(TOLOWER "${USER_INPUT}" INPUT_LOWER)
|
|
|
|
if("${INPUT_LOWER}" STREQUAL "y" OR "${INPUT_LOWER}" STREQUAL "")
|
|
set(${RESULT_VAR} TRUE PARENT_SCOPE)
|
|
execute_process(COMMAND echo "Y")
|
|
else()
|
|
set(${RESULT_VAR} FALSE PARENT_SCOPE)
|
|
execute_process(COMMAND echo "n")
|
|
endif()
|
|
endfunction()
|
|
|
|
if(NOT DEFINED CMAKE_SCRIPT_MODE_FILE)
|
|
message(FATAL_ERROR "This script should be run via: cmake -P uninstall.cmake")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND id -u
|
|
OUTPUT_VARIABLE USER_ID
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
if(NOT USER_ID EQUAL 0)
|
|
message(FATAL_ERROR "This script must be run as root (UID 0). Current UID: ${USER_ID}")
|
|
endif()
|
|
|
|
execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
message(STATUS "Uninstalling gh-wh-handler [${ARCH}]...")
|
|
|
|
message(STATUS "Stopping and disabling service...")
|
|
execute_process(COMMAND systemctl stop gh-wh-handler ERROR_QUIET)
|
|
execute_process(COMMAND systemctl disable gh-wh-handler ERROR_QUIET)
|
|
|
|
message(STATUS "Removing service file...")
|
|
file(REMOVE "/etc/systemd/system/gh-wh-handler.service")
|
|
|
|
message(STATUS "Reloading systemd...")
|
|
execute_process(COMMAND systemctl daemon-reload)
|
|
|
|
message(STATUS "Removing binaries...")
|
|
file(REMOVE "/usr/bin/gh-wh-handler")
|
|
file(REMOVE "/usr/bin/gh-wh-handler.${ARCH}")
|
|
|
|
ask_user_permission("Do you want to remove the configuration file?" REMOVE_CONFIG)
|
|
if(REMOVE_CONFIG)
|
|
message(STATUS "Removing /etc/gh-wh-handler...")
|
|
file(REMOVE_RECURSE "/etc/gh-wh-handler")
|
|
else()
|
|
message(STATUS "Skipping configuration removal.")
|
|
endif()
|
|
|
|
ask_user_permission("Do you want to remove the logs?" REMOVE_LOGS)
|
|
if(REMOVE_LOGS)
|
|
message(STATUS "Removing /var/log/gh-wh-handler...")
|
|
file(REMOVE_RECURSE "/var/log/gh-wh-handler")
|
|
else()
|
|
message(STATUS "Skipping log removal.")
|
|
endif()
|
|
|
|
message(STATUS "Uninstallation complete.")
|