From 3234dc6e392e8d579ececcfeb65a9e3edf4ab1c4 Mon Sep 17 00:00:00 2001 From: Tiago Garcia Date: Fri, 19 Jul 2024 15:27:39 +0100 Subject: [PATCH] Add installer Signed-off-by: Tiago Garcia --- .gitignore | 26 ++++++++++------- CMakeLists.txt | 12 ++++---- README.md | 8 ++++++ installer/install.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 17 deletions(-) create mode 100755 installer/install.sh diff --git a/.gitignore b/.gitignore index 44bf4e9..6573443 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,19 @@ # CMake build directories -CMakeFiles/ -CMakeCache.txt -cmake_install.cmake -*.cmake -*.cbp -*.layout -*.stackdump -CPackConfig.cmake -Makefile -CTestTestfile.cmake -install_manifest.txt +/build/* +!/build/config.json +!/build/gh-wh-handler.service.in +!/build/uninstall.cmake.in +/CMakeFiles/ +/CMakeCache.txt +/cmake_install.cmake +/*.cmake +/*.cbp +/*.layout +/*.stackdump +/CPackConfig.cmake +/Makefile +/CTestTestfile.cmake +/install_manifest.txt # Compiled binaries /bin/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 136701d..61cf806 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ set(SERVICE_CONFIG "/services/gh-wh-handler/config.json") set(SERVICE_LOGS "/services/gh-wh-handler/logs") configure_file( "${CMAKE_CURRENT_BINARY_DIR}/gh-wh-handler.service.in" - "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/gh-wh-handler.service" + "${CMAKE_CURRENT_BINARY_DIR}/gh-wh-handler.service" @ONLY) install(CODE "file(MAKE_DIRECTORY /services/gh-wh-handler)") install(CODE "file(MAKE_DIRECTORY /services/gh-wh-handler/logs)") @@ -60,7 +60,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/config.json" DESTINATION /services/gh-wh-handler) install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink /services/gh-wh-handler/${EXECUTABLE_NAME} /usr/bin/gh-wh-handler)") -install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/gh-wh-handler.service" +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gh-wh-handler.service" DESTINATION /etc/systemd/system) install(CODE "execute_process(COMMAND systemctl daemon-reload)") install(CODE "execute_process(COMMAND systemctl enable gh-wh-handler)") @@ -68,8 +68,8 @@ install(CODE "execute_process(COMMAND systemctl start gh-wh-handler)") if(NOT TARGET uninstall) - configure_file( - "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" IMMEDIATE @ONLY) - add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake) + configure_file( + "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" IMMEDIATE @ONLY) + add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake) endif() diff --git a/README.md b/README.md index 30def67..893b556 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,14 @@ Currently creating a local copy of remote files on every push ## Usage +### Use installation script (recommended) + +Run the installation script to install the application: + +```console +curl -fsSL https://cdn.tiagorg.pt/gh-wh-handler/install.sh | sudo sh +``` + ### Run prebuilt binary Head over to the [Releases Page](https://github.com/TiagoRG/gh-wh-handler/releases) and download the desired binary. diff --git a/installer/install.sh b/installer/install.sh new file mode 100755 index 0000000..4a33148 --- /dev/null +++ b/installer/install.sh @@ -0,0 +1,68 @@ +#!/bin/sh + +# Check if the script is being run as root +if [ "$(id -u)" -ne 0 ]; then + echo "This script must be run as root." + exit 1 +fi + +# Save the current directory +CUR_DIR=$(pwd) + +# Get system architecture +ARCH=$(uname -m) + +# Change to the temporary directory +cd /tmp + +# Download the latest version of the package for the system architecture +# Exit if the download fails +echo "Downloading gh-wh-handler..." +curl -fsSL https://cdn.tiagorg.pt/gh-wh-handler/gh-wh-handler.${ARCH}.latest.tar.gz -o gh-wh-handler.tar.gz || { echo "Download failed."; exit 1; } + +# Extract the package +echo "Extracting gh-wh-handler..." +tar -xzf gh-wh-handler.tar.gz || { echo "Extraction failed."; exit 1; } + +# Change to the extracted directory +cd gh-wh-handler + +# Install the package +echo "Installing gh-wh-handler..." + +# Create service directory +echo "Creating service directory..." +mkdir -p /services/gh-wh-handler +mkdir -p /services/gh-wh-handler/logs + +# Copy the binary and configuration file to the service directory +echo "Copying files..." +cp "gh-wh-handler.${ARCH}" /services/gh-wh-handler/ +cp "config.json" /services/gh-wh-handler/ + +# Create a symbolic link to the binary in /usr/bin +echo "Creating symbolic link..." +ln -sf /services/gh-wh-handler/gh-wh-handler.${ARCH} /usr/bin/gh-wh-handler + +# Copy the service file to the systemd directory +echo "Copying service file..." +cp "gh-wh-handler.service" /etc/systemd/system/ + +# Reload systemd +echo "Reloading systemd..." +systemctl daemon-reload + +# Enable and start the service +echo "Enabling and starting service..." +systemctl enable gh-wh-handler +systemctl start gh-wh-handler + +# Clean up +echo "Cleaning up..." +cd /tmp +rm -rf gh-wh-handler +rm gh-wh-handler.tar.gz + +# Change back to the original directory +cd $CUR_DIR +echo "Installation complete."