From ba4efe92301462b655d036533f523d4c020b3bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=80=D0=B5=D0=BF=D0=BE=D0=B4=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=90=D0=BB=D0=B5=D0=BD?= Date: Wed, 25 Oct 2023 15:30:16 +0300 Subject: [PATCH] Added deploy file. --- deploy | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 deploy diff --git a/deploy b/deploy new file mode 100644 index 0000000..7ef6078 --- /dev/null +++ b/deploy @@ -0,0 +1,132 @@ +#!/usr/bin/env bash + +set -e + +PROJECT_NAME=dm +BUILD_TYPE=Release +INSTALL_PATH=/usr/sbin + +pop_directory() +{ + popd >/dev/null +} + +push_directory() +{ + local DIRECTORY="$1" + + pushd "$DIRECTORY" >/dev/null +} + +display_heading_message() +{ + echo + echo "********************** $@ **********************" + echo +} + +display_message() +{ + echo "$@" +} + +display_error() +{ + >&2 echo "$@" +} + +display_help() +{ + display_message "Usage: ./deploy [OPTION]..." + display_message "Manage the configure." + display_message "Script options:" + display_message " --build-dir= Location of build files (default: $BUILD_DIR)." + display_message " --release Release builed (default)." + display_message " --debug Debug build." + display_message " --help Display usage, overriding script execution." + display_message "" +} + +display_configuration() +{ + display_message "Configuration." + display_message "--------------------------------------------------------------------" + display_message "PROJECT_NAME : $PROJECT_NAME" + display_message "BUILD_TYPE : $BUILD_TYPE" + display_message "BUILD_DIR : $BUILD_DIR" + display_message "--------------------------------------------------------------------" +} + +make_project() +{ + push_directory "$BUILD_DIR" + + display_heading_message "Make: $PROJECT_NAME" + + make + + pop_directory +} + +update_project() +{ + display_heading_message "Update $PROJECT_NAME" + + display_heading_message "stop service $PROJECT_NAME" + systemctl stop $PROJECT_NAME.service + + display_heading_message "copy $PROJECT_NAME to /usr/bin" + + push_directory "$BUILD_DIR" + + rm -rf /usr/sbin/$PROJECT_NAME + cp $PROJECT_NAME /usr/sbin + + pop_directory + + display_heading_message "clear log files..." + rm -rf /etc/$PROJECT_NAME/logs/*.log + rm -rf /var/log/$PROJECT_NAME/*.log + + display_heading_message "start service $PROJECT_NAME" + systemctl start ${PROJECT_NAME}.service +} + +# Parse command line options that are handled by this script. +#------------------------------------------------------------------------------ +for OPTION in "$@"; do + case $OPTION in + # Standard script options. + (--help) DISPLAY_HELP="yes";; + + (--release) BUILD_TYPE="Release";; + (--debug) BUILD_TYPE="Debug";; + + (--update) BUILD_UPDATE="yes";; + + # Unique script options. + (--build-dir=*) BUILD_DIR="${OPTION#*=}";; + esac +done + +if ! [[ $BUILD_DIR ]]; then + if [[ $BUILD_TYPE == Debug ]]; then + BUILD_DIR=cmake-build-debug + else + BUILD_DIR=cmake-build-release + fi +fi + +# Configure. +#============================================================================== +if [[ $DISPLAY_HELP ]]; then + display_help +else + display_configuration + + if ! [[ $BUILD_UPDATE ]]; then + make_project + fi + + update_project +fi