gh-wh-handler/build/uninstall.cmake.in

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.")