From 40875dfe49da43e6ebf6a46bcf2ffdc53d34c8ba Mon Sep 17 00:00:00 2001 From: th33xitus Date: Fri, 18 Jun 2021 18:03:47 +0200 Subject: [PATCH] script: simplify service action methods --- scripts/functions.sh | 104 +++++++------------------------ scripts/install_klipper.sh | 8 +-- scripts/install_klipper_webui.sh | 2 +- scripts/install_moonraker.sh | 4 +- scripts/ui/main_menu.sh | 60 ++++++------------ scripts/update.sh | 12 ++-- 6 files changed, 54 insertions(+), 136 deletions(-) diff --git a/scripts/functions.sh b/scripts/functions.sh index 2817126..2713635 100755 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -82,7 +82,8 @@ change_klipper_cfg_path(){ set_klipper_cfg_path(){ ### stop services - klipper_service "stop" && moonraker_service "stop" + do_action_service "stop" "klipper" + do_action_service "stop" "moonraker" ### copy config files to new klipper config folder if [ ! -z "$old_klipper_cfg_loc" ] && [ -d "$old_klipper_cfg_loc" ]; then @@ -137,77 +138,17 @@ set_klipper_cfg_path(){ sudo systemctl daemon-reload ### restart services - klipper_service "restart" && moonraker_service "restart" + do_action_service "restart" "klipper" + do_action_service "restart" "moonraker" } source_kiauh_ini(){ source $INI_FILE } -klipper_service(){ - ### set a variable for the ok and status messages - [ "$1" == "start" ] && ACTION1="started" && ACTION2="Starting" - [ "$1" == "stop" ] && ACTION1="stopped" && ACTION2="Stopping" - [ "$1" == "restart" ] && ACTION1="restarted" && ACTION2="Restarting" - - if ls /etc/systemd/system/klipper-*.service 2>/dev/null 1>&2; then - INSTANCE_COUNT=$(systemctl list-units --full -all -t service --no-legend | grep -E "klipper-[[:digit:]].service" | wc -l) - INSTANCE=1 - status_msg "$ACTION2 $INSTANCE_COUNT Klipper Services ..." - while [ $INSTANCE -le $INSTANCE_COUNT ]; do - sudo systemctl $1 klipper-$INSTANCE && ok_msg "Klipper Service #$INSTANCE $ACTION1!" - ### instance counter +1 - INSTANCE=$(expr $INSTANCE + 1) - done - elif [ "$(systemctl list-units --full -all -t service --no-legend | grep -E "klipper.service")" ]; then - status_msg "$ACTION2 Klipper Service ..." - sudo systemctl $1 klipper && ok_msg "Klipper Service $ACTION1!" - fi -} - -moonraker_service(){ - ### set a variable for the ok and status messages - [ "$1" == "start" ] && ACTION1="started" && ACTION2="Starting" - [ "$1" == "stop" ] && ACTION1="stopped" && ACTION2="Stopping" - [ "$1" == "restart" ] && ACTION1="restarted" && ACTION2="Restarting" - - if ls /etc/systemd/system/moonraker-*.service 2>/dev/null 1>&2; then - INSTANCE_COUNT=$(systemctl list-units --full -all -t service --no-legend | grep -E "moonraker-[[:digit:]].service" | wc -l) - INSTANCE=1 - status_msg "$ACTION2 $INSTANCE_COUNT Moonraker Services ..." - while [ $INSTANCE -le $INSTANCE_COUNT ]; do - sudo systemctl $1 moonraker-$INSTANCE && ok_msg "Moonraker Service #$INSTANCE $ACTION1!" - ### instance counter +1 - INSTANCE=$(expr $INSTANCE + 1) - done - elif [ "$(systemctl list-units --full -all -t service --no-legend | grep -E "moonraker.service")" ]; then - status_msg "$ACTION2 Moonraker Service ..." - sudo systemctl $1 moonraker && ok_msg "Moonraker Service $ACTION1!" - fi -} - -dwc_service(){ - ### set a variable for the ok and status messages - [ "$1" == "start" ] && ACTION1="started" && ACTION2="Starting" - [ "$1" == "stop" ] && ACTION1="stopped" && ACTION2="Stopping" - [ "$1" == "restart" ] && ACTION1="restarted" && ACTION2="Restarting" - - if ls /etc/systemd/system/dwc-*.service 2>/dev/null 1>&2; then - INSTANCE_COUNT=$(systemctl list-units --full -all -t service --no-legend | grep -E "dwc-[[:digit:]].service" | wc -l) - INSTANCE=1 - status_msg "$ACTION2 $INSTANCE_COUNT DWC-for-Klipper-Socket Services ..." - while [ $INSTANCE -le $INSTANCE_COUNT ]; do - sudo systemctl $1 dwc-$INSTANCE && ok_msg "DWC-for-Klipper-Socket Service #$INSTANCE $ACTION1!" - ### instance counter +1 - INSTANCE=$(expr $INSTANCE + 1) - done - elif [ "$(systemctl list-units --full -all -t service --no-legend | grep -E "dwc.service")" ]; then - status_msg "$ACTION2 DWC-for-Klipper-Socket Service ..." - sudo systemctl $1 dwc && ok_msg "DWC-for-Klipper-Socket Service $ACTION1!" - fi -} - -octoprint_service(){ +do_action_service(){ + shopt -s extglob # enable extended globbing + SERVICES="$SYSTEMDDIR/$2?(-*([0-9])).service" ### set a variable for the ok and status messages [ "$1" == "start" ] && ACTION1="started" && ACTION2="Starting" [ "$1" == "stop" ] && ACTION1="stopped" && ACTION2="Stopping" @@ -215,30 +156,27 @@ octoprint_service(){ [ "$1" == "enable" ] && ACTION1="enabled" && ACTION2="Enabling" [ "$1" == "disable" ] && ACTION1="disabled" && ACTION2="Disabling" - if ls /etc/systemd/system/octoprint-*.service 2>/dev/null 1>&2; then - INSTANCE=1 - INSTANCE_COUNT=$(systemctl list-unit-files | grep -E "octoprint.*" | wc -l) - status_msg "$ACTION2 $INSTANCE_COUNT OctoPrint Services ..." - while [ $INSTANCE -le $INSTANCE_COUNT ]; do - sudo systemctl $1 octoprint-$INSTANCE && ok_msg "OctoPrint Service #$INSTANCE $ACTION1!" - ### instance counter +1 - INSTANCE=$(expr $INSTANCE + 1) + if ls $SERVICES 2>/dev/null 1>&2; then + for service in $(ls $SERVICES | rev | cut -d"/" -f1 | rev); do + status_msg "$ACTION2 $service ..." + sudo systemctl $1 "$service" + ok_msg "$service $ACTION1!" done - elif [ "$(systemctl list-unit-files | grep -E "octoprint.*")" ]; then - status_msg "$ACTION2 OctoPrint Service ..." - sudo systemctl $1 octoprint && ok_msg "OctoPrint Service $ACTION1!" + else + ERROR_MSG="Service '$2' not found!" && print_msg && clear_msg fi + shopt -u extglob # disable extended globbing } toggle_octoprint_service(){ if systemctl list-unit-files | grep -E "octoprint.*" | grep "enabled" &>/dev/null; then - octoprint_service "stop" - octoprint_service "disable" + do_action_service "stop" "octoprint" + do_action_service "disable" "octoprint" sleep 2 CONFIRM_MSG=" OctoPrint Service is now >>> DISABLED <<< !" elif systemctl list-unit-files | grep -E "octoprint.*" | grep "disabled" &>/dev/null; then - octoprint_service "enable" - octoprint_service "start" + do_action_service "enable" "octoprint" + do_action_service "start" "octoprint" sleep 2 CONFIRM_MSG=" OctoPrint Service is now >>> ENABLED <<< !" else @@ -370,7 +308,7 @@ setup_gcode_shell_command(){ } install_gcode_shell_command(){ - klipper_service "stop" + do_action_service "stop" "klipper" status_msg "Copy 'gcode_shell_command.py' to '$KLIPPER_DIR/klippy/extras' ..." cp ${SRCDIR}/kiauh/resources/gcode_shell_command.py $KLIPPER_DIR/klippy/extras while true; do @@ -412,7 +350,7 @@ install_gcode_shell_command(){ esac done ok_msg "Shell command extension installed!" - klipper_service "restart" + do_action_service "restart" "klipper" } create_minimal_cfg(){ diff --git a/scripts/install_klipper.sh b/scripts/install_klipper.sh index ce63d43..d3af6d5 100755 --- a/scripts/install_klipper.sh +++ b/scripts/install_klipper.sh @@ -286,18 +286,18 @@ select_mcu_id(){ } flash_mcu(){ - klipper_service "stop" + do_action_service "stop" "klipper" if ! make flash FLASH_DEVICE="${mcu_list[$mcu_index]}" ; then warn_msg "Flashing failed!" warn_msg "Please read the console output above!" else ok_msg "Flashing successfull!" fi - klipper_service "start" + do_action_service "start" "klipper" } flash_mcu_sd(){ - klipper_service "stop" + do_action_service "stop" "klipper" ### write each supported board to the array to make it selectable board_list=() @@ -362,7 +362,7 @@ flash_mcu_sd(){ ok_msg "Flashing successfull!" fi - klipper_service "start" + do_action_service "start" "klipper" } build_fw(){ diff --git a/scripts/install_klipper_webui.sh b/scripts/install_klipper_webui.sh index e949cf9..ea1fa84 100755 --- a/scripts/install_klipper_webui.sh +++ b/scripts/install_klipper_webui.sh @@ -163,7 +163,7 @@ install_kiauh_macros(){ ok_msg "$klipper_cfg_loc/kiauh_macros.cfg created!" fi ### restart klipper service to parse the modified printer.cfg - klipper_service "restart" + do_action_service "restart" "klipper" fi } diff --git a/scripts/install_moonraker.sh b/scripts/install_moonraker.sh index 6abe1fd..911b6b1 100755 --- a/scripts/install_moonraker.sh +++ b/scripts/install_moonraker.sh @@ -352,9 +352,9 @@ process_octoprint_dialog(){ Y|y|Yes|yes|"") echo -e "###### > Yes" status_msg "Stopping OctoPrint ..." - octoprint_service "stop" && ok_msg "OctoPrint service stopped!" + do_action_service "stop" "octoprint" && ok_msg "OctoPrint service stopped!" status_msg "Disabling OctoPrint ..." - octoprint_service "disable" && ok_msg "OctoPrint service disabled!" + do_action_service "disable" "octoprint" && ok_msg "OctoPrint service disabled!" break;; N|n|No|no) echo -e "###### > No" diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index cd26827..e279ac4 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -59,46 +59,26 @@ main_menu(){ while true; do read -p "${cyan}Perform action:${default} " action; echo case "$action" in - "start klipper") - do_action "klipper_service start" "main_ui";; - "stop klipper") - do_action "klipper_service stop" "main_ui";; - "restart klipper") - do_action "klipper_service restart" "main_ui";; - "start moonraker") - do_action "moonraker_service start" "main_ui";; - "stop moonraker") - do_action "moonraker_service stop" "main_ui";; - "restart moonraker") - do_action "moonraker_service restart" "main_ui";; - "start dwc") - do_action "dwc_service start" "main_ui";; - "stop dwc") - do_action "dwc_service stop" "main_ui";; - "restart dwc") - do_action "dwc_service restart" "main_ui";; - "start octoprint") - do_action "octoprint_service start" "main_ui";; - "stop octoprint") - do_action "octoprint_service stop" "main_ui";; - "restart octoprint") - do_action "octoprint_service restart" "main_ui";; - update) - do_action "update_kiauh" "main_ui";; - 0) - do_action "upload_selection" "main_ui";; - 1) - clear && install_menu && break;; - 2) - clear && update_menu && break;; - 3) - clear && remove_menu && break;; - 4) - clear && advanced_menu && break;; - 5) - clear && backup_menu && break;; - 6) - clear && settings_menu && break;; + "start klipper") do_action_service "start" "klipper"; main_ui;; + "stop klipper") do_action_service "stop" "klipper"; main_ui;; + "restart klipper") do_action_service "restart" "klipper"; main_ui;; + "start moonraker") do_action_service "start" "moonraker"; main_ui;; + "stop moonraker") do_action_service "stop" "moonraker"; main_ui;; + "restart moonraker")do_action_service "restart" "moonraker"; main_ui;; + "start dwc") do_action_service "start" "dwc"; main_ui;; + "stop dwc") do_action_service "stop" "dwc"; main_ui;; + "restart dwc") do_action_service "restart" "dwc"; main_ui;; + "start octoprint") do_action_service "start" "octoprint"; main_ui;; + "stop octoprint") do_action_service "stop" "octoprint"; main_ui;; + "restart octoprint") do_action_service "restart" "octoprint"; main_ui;; + update) do_action "update_kiauh" "main_ui";; + 0) do_action "upload_selection" "main_ui";; + 1) clear && install_menu && break;; + 2) clear && update_menu && break;; + 3) clear && remove_menu && break;; + 4) clear && advanced_menu && break;; + 5) clear && backup_menu && break;; + 6) clear && settings_menu && break;; Q|q) echo -e "${green}###### Happy printing! ######${default}"; echo exit -1;; diff --git a/scripts/update.sh b/scripts/update.sh index f8d1506..a4d0bb0 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -202,7 +202,7 @@ migrate_custompios(){ } update_klipper(){ - klipper_service "stop" + do_action_service "stop" "klipper" if [ ! -d $KLIPPER_DIR ]; then cd ${HOME} && git clone $KLIPPER_REPO else @@ -240,18 +240,18 @@ update_klipper(){ fi update_log_paths "klipper" ok_msg "Update complete!" - klipper_service "restart" + do_action_service "restart" "klipper" } update_dwc2fk(){ - dwc_service "stop" + do_action_service "stop" "dwc" bb4u "dwc2" if [ ! -d $DWC2FK_DIR ]; then cd ${HOME} && git clone $DWC2FK_REPO else cd $DWC2FK_DIR && git pull fi - dwc_service "start" + do_action_service "start" "dwc" } update_dwc2(){ @@ -274,7 +274,7 @@ update_fluidd(){ } update_moonraker(){ - moonraker_service "stop" + do_action_service "stop" "moonraker" bb4u "moonraker" status_msg "Updating Moonraker ..." cd $MOONRAKER_DIR @@ -301,7 +301,7 @@ update_moonraker(){ fi update_log_paths "moonraker" ok_msg "Update complete!" - moonraker_service "restart" + do_action_service "restart" "moonraker" } update_klipperscreen(){