diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a79b3ac..7aa43b8 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] +custom: https://paypal.me/dwillner0 diff --git a/.gitignore b/.gitignore index 0da0757..efabb67 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea .vscode .idea .pytest_cache diff --git a/README.md b/README.md index 1c9a6df..720cc34 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ ### 📋 Prerequisites KIAUH is a script that assists you in installing Klipper on a Linux operating system that has already been flashed to your Raspberry Pi's (or other SBC's) SD card. As a result, you must ensure -that you have a functional Linux system on hand. `Raspberry Pi OS Lite (32bit)` is a recommended Linux image +that you have a functional Linux system on hand. `Raspberry Pi OS Lite (either 32bit or 64bit)` is a recommended Linux image if you are using a Raspberry Pi. The [official Raspberry Pi Imager](https://www.raspberrypi.com/software/) is the simplest way to flash an image like this to an SD card. @@ -39,7 +39,7 @@ select `Choose OS -> Raspberry Pi OS (other)`: \ KIAUH logo

-* Then select `Raspberry Pi OS Lite (32bit)`: +* Then select `Raspberry Pi OS Lite (32bit)` (or 64bit if you want to use that instead):

KIAUH logo

@@ -125,7 +125,7 @@ prompt and confirm by hitting ENTER. Fluidd Logo jordanruthe avatar -OctoPrint Logo +OctoPrint Logo by fluidd-core diff --git a/kiauh.sh b/kiauh.sh index 9b2d782..19175d1 100755 --- a/kiauh.sh +++ b/kiauh.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/resources/example.printer.cfg b/resources/example.printer.cfg index 216081b..88fe7df 100644 --- a/resources/example.printer.cfg +++ b/resources/example.printer.cfg @@ -1,7 +1,11 @@ [mcu] serial: /dev/serial/by-id/ +[virtual_sdcard] +path: %GCODES_DIR% +on_error_gcode: CANCEL_PRINT + [printer] kinematics: none max_velocity: 1000 -max_accel: 1000 \ No newline at end of file +max_accel: 1000 diff --git a/scripts/backup.sh b/scripts/backup.sh index cdb9af7..091d99f 100755 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -33,23 +33,27 @@ function backup_before_update() { function backup_config_dir() { check_for_backup_dir - local current_date instance_names config_pathes + local current_date config_pathes config_pathes=$(get_config_folders) - readarray -t -d" " instance_names < <(get_multi_instance_names) if [[ -n "${config_pathes}" ]]; then current_date=$(get_date) status_msg "Timestamp: ${current_date}" - local i=0 folder + local i=0 folder folder_name target_dir for folder in ${config_pathes}; do - local folder_name="${instance_names[${i}]}" - status_msg "Create backup of ${folder} ..." - mkdir -p "${BACKUP_DIR}/configs/${current_date}/${folder_name}" - cp -r "${folder}" "${_}" - ok_msg "Backup created in:\n${BACKUP_DIR}/configs/${current_date}/${folder_name}" - i=$(( i + 1 )) + if [[ -d ${folder} ]]; then + status_msg "Create backup of ${folder} ..." + + folder_name=$(echo "${folder}" | rev | cut -d"/" -f2 | rev) + target_dir="${BACKUP_DIR}/configs/${current_date}/${folder_name}" + mkdir -p "${target_dir}" + cp -r "${folder}" "${target_dir}" + i=$(( i + 1 )) + + ok_msg "Backup created in:\n${target_dir}" + fi done else ok_msg "No config directory found! Skipping backup ..." @@ -61,20 +65,22 @@ function backup_moonraker_database() { local current_date db_pathes db_pathes=$(get_instance_folder_path "database") - readarray -t -d" " instance_names < <(get_multi_instance_names) if [[ -n ${db_pathes} ]]; then current_date=$(get_date) status_msg "Timestamp: ${current_date}" - local i=0 database + local i=0 database folder_name target_dir for database in ${db_pathes}; do - local folder_name="${instance_names[${i}]}" status_msg "Create backup of ${database} ..." - mkdir -p "${BACKUP_DIR}/moonraker_databases/${current_date}/${folder_name}" - cp -r "${database}" "${_}" - ok_msg "Backup created in:\n${BACKUP_DIR}/moonraker_databases/${current_date}/${folder_name}" + + folder_name=$(echo "${database}" | rev | cut -d"/" -f2 | rev) + target_dir="${BACKUP_DIR}/moonraker_databases/${current_date}/${folder_name}" + mkdir -p "${target_dir}" + cp -r "${database}" "${target_dir}" i=$(( i + 1 )) + + ok_msg "Backup created in:\n${target_dir}" done else print_error "No Moonraker database found! Skipping backup ..." @@ -191,3 +197,19 @@ function backup_telegram_bot() { print_error "Can't back up MoonrakerTelegramBot directory!\n Not found!" fi } + +function backup_octoeverywhere() { + local current_date + + if [[ -d ${OCTOEVERYWHERE_DIR} ]] ; then + status_msg "Creating OctoEverywhere backup ..." + check_for_backup_dir + current_date=$(get_date) + status_msg "Timestamp: ${current_date}" + mkdir -p "${BACKUP_DIR}/OctoEverywhere-backups/${current_date}" + cp -r "${OCTOEVERYWHERE_DIR}" "${_}" && cp -r "${OCTOEVERYWHERE_ENV}" "${_}" + print_confirm "OctoEverywhere backup complete!" + else + print_error "Can't back up OctoEverywhere directory!\n Not found!" + fi +} diff --git a/scripts/crowsnest.sh b/scripts/crowsnest.sh index b97d86f..0ec857e 100644 --- a/scripts/crowsnest.sh +++ b/scripts/crowsnest.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/flash_klipper.sh b/scripts/flash_klipper.sh index 437b7af..4fd4f45 100644 --- a/scripts/flash_klipper.sh +++ b/scripts/flash_klipper.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -52,16 +52,57 @@ function init_flash_process() { esac done - ### step 2: select how the mcu is connected to the host + ### step 2: select how the mcu is flashed (flash/serialflash) + select_flash_command + + ### step 3: select how the mcu is connected to the host select_mcu_connection - ### step 3: select which detected mcu should be flashed + ### step 4: select which detected mcu should be flashed select_mcu_id "${method}" } #================================================# #=================== STEP 2 =====================# #================================================# +function select_flash_command() { + unset flash_command + + top_border + echo -e "| How to flash MCU? |" + echo -e "| 1) make flash (default) |" + echo -e "| 2) make serialflash (stm32flash) |" + blank_line + back_help_footer + + local choice + while true; do + read -p "${cyan}###### Flashing command:${white} " -i "1" -e choice + case "${choice}" in + 1) + select_msg "Selected 'make flash' command" + flash_command="flash" + break;; + 2) + select_msg "Selected 'make serialflash' command" + flash_command="serialflash" + break;; + B|b) + advanced_menu + break;; + H|h) + clear && print_header + show_mcu_flash_command_help + break;; + *) + error_msg "Invalid command!";; + esac + done +} + +#================================================# +#=================== STEP 3 =====================# +#================================================# function select_mcu_connection() { top_border echo -e "| ${yellow}Make sure that the controller board is connected now!${white} |" @@ -112,7 +153,6 @@ function print_detected_mcu_to_screen() { fi for mcu in "${mcu_list[@]}"; do - mcu=$(echo "${mcu}" | rev | cut -d"/" -f1 | rev) echo -e " ● MCU #${i}: ${cyan}${mcu}${white}" i=$(( i + 1 )) done @@ -120,7 +160,7 @@ function print_detected_mcu_to_screen() { } #================================================# -#=================== STEP 3 =====================# +#=================== STEP 4 =====================# #================================================# function select_mcu_id() { local i=0 sel_index=0 method=${1} @@ -195,7 +235,7 @@ function start_flash_mcu() { local device=${1} do_action_service "stop" "klipper" - if make flash FLASH_DEVICE="${device}"; then + if make ${flash_command} FLASH_DEVICE="${device}"; then ok_msg "Flashing successfull!" else warn_msg "Flashing failed!" @@ -387,6 +427,36 @@ function show_flash_method_help() { done } +function show_mcu_flash_command_help() { + top_border + echo -e "| ~~~~~~~~ < ? > Help: Flash MCU < ? > ~~~~~~~~ |" + hr + echo -e "| ${cyan}make flash:${white} |" + echo -e "| The default command to flash controller board, it |" + echo -e "| will detect selected microcontroller and use suitable |" + echo -e "| tool for flashing it. |" + blank_line + echo -e "| ${cyan}make serialflash:${white} |" + echo -e "| Special command to flash STM32 microcontrollers in |" + echo -e "| DFU mode but connected via serial. stm32flash command |" + echo -e "| will be used internally. |" + blank_line + back_footer + + local choice + while true; do + read -p "${cyan}###### Please select:${white} " choice + case "${choice}" in + B|b) + clear && print_header + select_flash_command + break;; + *) + error_msg "Invalid command!";; + esac + done +} + function show_mcu_connection_help() { top_border echo -e "| ~~~~~~~~ < ? > Help: Flash MCU < ? > ~~~~~~~~ |" diff --git a/scripts/fluidd.sh b/scripts/fluidd.sh index e67b7a6..accbcb1 100644 --- a/scripts/fluidd.sh +++ b/scripts/fluidd.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/gcode_shell_command.sh b/scripts/gcode_shell_command.sh index a512b4f..ff804d3 100644 --- a/scripts/gcode_shell_command.sh +++ b/scripts/gcode_shell_command.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/globals.sh b/scripts/globals.sh index f149f13..1c5fc4c 100644 --- a/scripts/globals.sh +++ b/scripts/globals.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/klipper.sh b/scripts/klipper.sh index d5d5469..117caef 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -244,6 +244,7 @@ function run_klipper_setup() { ### finalizing the setup with writing instance names to the kiauh.ini set_multi_instance_names + mask_disrupting_services print_confirm "${confirm}" && return } @@ -333,6 +334,7 @@ function create_klipper_service() { local printer_data local cfg_dir + local gcodes_dir local cfg local log local klippy_serial @@ -345,6 +347,7 @@ function create_klipper_service() { printer_data="${HOME}/${instance_name}_data" cfg_dir="${printer_data}/config" + gcodes_dir="${printer_data}/gcodes" cfg="${cfg_dir}/printer.cfg" log="${printer_data}/logs/klippy.log" klippy_serial="${printer_data}/comms/klippy.serial" @@ -375,18 +378,20 @@ function create_klipper_service() { fi if [[ ! -f ${cfg} ]]; then - write_example_printer_cfg "${cfg}" + write_example_printer_cfg "${cfg}" "${gcodes_dir}" fi } function write_example_printer_cfg() { local cfg=${1} + local gcodes_dir=${2} local cfg_template cfg_template="${KIAUH_SRCDIR}/resources/example.printer.cfg" status_msg "Creating minimal example printer.cfg ..." if cp "${cfg_template}" "${cfg}"; then + sed -i "s|%GCODES_DIR%|${gcodes_dir}|" "${cfg}" ok_msg "Minimal example printer.cfg created!" else error_msg "Couldn't create minimal example printer.cfg!" @@ -625,3 +630,34 @@ function get_klipper_python_ver() { version=$("${KLIPPY_ENV}"/bin/python --version 2>&1 | cut -d" " -f2 | cut -d"." -f1) echo "${version}" } + +function mask_disrupting_services() { + local brltty="false" + local brltty_udev="false" + local modem_manager="false" + + [[ $(dpkg -s brltty 2>/dev/null | grep "Status") = *\ installed ]] && brltty="true" + [[ $(dpkg -s brltty-udev 2>/dev/null | grep "Status") = *\ installed ]] && brltty_udev="true" + [[ $(dpkg -s ModemManager 2>/dev/null | grep "Status") = *\ installed ]] && modem_manager="true" + + status_msg "Installed brltty package detected, masking brltty service ..." + if [[ ${brltty} == "true" ]]; then + sudo systemctl stop brltty + sudo systemctl mask brltty + fi + ok_msg "brltty service masked!" + + status_msg "Installed brltty-udev package detected, masking brltty-udev service ..." + if [[ ${brltty_udev} == "true" ]]; then + sudo systemctl stop brltty-udev + sudo systemctl mask brltty-udev + fi + ok_msg "brltty-udev service masked!" + + status_msg "Installed ModemManager package detected, masking ModemManager service ..." + if [[ ${modem_manager} == "true" ]]; then + sudo systemctl stop ModemManager + sudo systemctl mask ModemManager + fi + ok_msg "ModemManager service masked!" +} diff --git a/scripts/klipperscreen.sh b/scripts/klipperscreen.sh index bd18d70..9701e7c 100644 --- a/scripts/klipperscreen.sh +++ b/scripts/klipperscreen.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -119,6 +119,8 @@ function update_klipperscreen() { old_md5=$(md5sum "${KLIPPERSCREEN_DIR}/scripts/KlipperScreen-requirements.txt" | cut -d " " -f1) do_action_service "stop" "KlipperScreen" + backup_before_update "klipperscreen" + cd "${KLIPPERSCREEN_DIR}" git pull origin master -q && ok_msg "Fetch successfull!" git checkout -f master && ok_msg "Checkout successfull" diff --git a/scripts/mainsail.sh b/scripts/mainsail.sh index 34cff43..9182c6c 100644 --- a/scripts/mainsail.sh +++ b/scripts/mainsail.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/mjpg-streamer.sh b/scripts/mjpg-streamer.sh index f139b96..26168dc 100644 --- a/scripts/mjpg-streamer.sh +++ b/scripts/mjpg-streamer.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/mobileraker.sh b/scripts/mobileraker.sh index fa4ff60..39445a0 100644 --- a/scripts/mobileraker.sh +++ b/scripts/mobileraker.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -61,8 +61,8 @@ function mobileraker_setup() { exit 1 fi - status_msg "Installing Mobileraker's companion ..." - if "${MOBILERAKER_DIR}"/scripts/install-mobileraker-companion.sh; then + status_msg "Starting installer of Mobileraker's companion ..." + if "${MOBILERAKER_DIR}"/scripts/install.sh; then ok_msg "Mobileraker's companion successfully installed!" else print_error "Mobileraker's companion installation failed!" @@ -233,7 +233,7 @@ primary_branch:main managed_services: mobileraker env: ${HOME}/mobileraker-env/bin/python requirements: scripts/mobileraker-requirements.txt -install_script: scripts/install-mobileraker-companion.sh +install_script: scripts/install.sh MOONRAKER_CONF fi diff --git a/scripts/moonraker-telegram-bot.sh b/scripts/moonraker-telegram-bot.sh index b706afa..06cf22b 100644 --- a/scripts/moonraker-telegram-bot.sh +++ b/scripts/moonraker-telegram-bot.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index 210d553..8ef046e 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/nginx.sh b/scripts/nginx.sh index f00b28e..9b80d68 100644 --- a/scripts/nginx.sh +++ b/scripts/nginx.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/obico.sh b/scripts/obico.sh index 46f9e28..bd6a1cd 100644 --- a/scripts/obico.sh +++ b/scripts/obico.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -63,7 +63,7 @@ function obico_server_url_prompt() { } function moonraker_obico_setup_dialog() { - status_msg "Initializing Moonraker-obico installation ..." + status_msg "Initializing Obico installation ..." local moonraker_count local moonraker_names @@ -73,7 +73,7 @@ function moonraker_obico_setup_dialog() { if (( moonraker_count == 0 )); then ### return early if moonraker is not installed local error="Moonraker not installed! Please install Moonraker first!" - log_error "Moonraker-obico setup started without Moonraker being installed. Aborting setup." + log_error "Obico setup started without Moonraker being installed. Aborting setup." print_error "${error}" && return elif (( moonraker_count > 1 )); then # moonraker_names is valid only in case of multi-instance @@ -90,10 +90,10 @@ function moonraker_obico_setup_dialog() { if (( allowed_moonraker_obico_count == 0 && moonraker_count > 0 )) && [[ $(get_moonraker_obico_status) != "Not linked!" ]]; then local yn while true; do - echo "${yellow}Obico for Klipper is already installed.${white}" + echo "${yellow}Obico is already installed.${white}" echo "It is safe to run the install again to repair any issues." echo "" - local question="Do you want to reinstall Obico for Klipper?" + local question="Do you want to reinstall Obico?" read -p "${cyan}###### ${question} (Y/n):${white} " yn case "${yn}" in Y|y|Yes|yes|"") @@ -101,7 +101,7 @@ function moonraker_obico_setup_dialog() { break;; N|n|No|no) select_msg "No" - abort_msg "Exiting Obico for Klipper installation...\n" + abort_msg "Exiting Obico installation...\n" return;; *) error_msg "Invalid Input!";; @@ -126,31 +126,30 @@ function moonraker_obico_setup_dialog() { done blank_line if (( existing_moonraker_obico_count > 0 )); then - printf "|${green}%-55s${white}|\n" " ${existing_moonraker_obico_count} Moonraker-obico instances already installed!" + printf "|${green}%-55s${white}|\n" " ${existing_moonraker_obico_count} Obico instances already installed!" for svc in ${moonraker_obico_services}; do printf "|${cyan}%-57s${white}|\n" " ● moonraker-obco-$(get_instance_name "${svc}")" done fi blank_line - echo -e "| The setup will apply the same names to |" - echo -e "| Moonraker-obico! |" + echo -e "| The setup will apply the same names to Obico! |" blank_line - echo -e "| Please select the number of Moonraker-obico instances |" - echo -e "| to install. Usually one Moonraker-obico instance per |" + echo -e "| Please select the number of Obico instances |" + echo -e "| to install. Usually one Obico instance per |" echo -e "| Moonraker instance is required, but you may not |" - echo -e "| install more Moonraker-obico instances than available |" + echo -e "| install more Obico instances than available |" echo -e "| Moonraker instances. |" bottom_border ### ask for amount of instances local re="^[1-9][0-9]*$" while [[ ! ${new_moonraker_obico_count} =~ ${re} || ${new_moonraker_obico_count} -gt ${allowed_moonraker_obico_count} ]]; do - read -p "${cyan}###### Number of new Moonraker-obico instances to set up:${white} " -i "${allowed_moonraker_obico_count}" -e new_moonraker_obico_count + read -p "${cyan}###### Number of new Obico instances to set up:${white} " -i "${allowed_moonraker_obico_count}" -e new_moonraker_obico_count ### break if input is valid [[ ${new_moonraker_obico_count} =~ ${re} && ${new_moonraker_obico_count} -le ${allowed_moonraker_obico_count} ]] && break ### conditional error messages [[ ! ${new_moonraker_obico_count} =~ ${re} ]] && error_msg "Input not a number" - (( new_moonraker_obico_count > allowed_moonraker_obico_count )) && error_msg "Number of Moonraker-obico instances larger than installed Moonraker instances" + (( new_moonraker_obico_count > allowed_moonraker_obico_count )) && error_msg "Number of Obico instances larger than installed Moonraker instances" done && select_msg "${new_moonraker_obico_count}" else log_error "Internal error. moonraker_count of '${moonraker_count}' not equal or grather than one!" @@ -160,8 +159,8 @@ function moonraker_obico_setup_dialog() { ### Step 2: Confirm instance amount local yn while true; do - (( new_moonraker_obico_count == 1 )) && local question="Install Moonraker-obico?" - (( new_moonraker_obico_count > 1 )) && local question="Install ${new_moonraker_obico_count} Moonraker-obico instances?" + (( new_moonraker_obico_count == 1 )) && local question="Install Obico?" + (( new_moonraker_obico_count > 1 )) && local question="Install ${new_moonraker_obico_count} Obico instances?" read -p "${cyan}###### ${question} (Y/n):${white} " yn case "${yn}" in Y|y|Yes|yes|"") @@ -169,7 +168,7 @@ function moonraker_obico_setup_dialog() { break;; N|n|No|no) select_msg "No" - abort_msg "Exiting Moonraker-obico setup ...\n" + abort_msg "Exiting Obico setup ...\n" return;; *) error_msg "Invalid Input!";; @@ -191,8 +190,8 @@ function moonraker_obico_setup_dialog() { fi done - (( new_moonraker_obico_count > 1 )) && status_msg "Installing ${new_moonraker_obico_count} Moonraker-obico instances ..." - (( new_moonraker_obico_count == 1 )) && status_msg "Installing Moonraker-obico ..." + (( new_moonraker_obico_count > 1 )) && status_msg "Installing ${new_moonraker_obico_count} Obico instances ..." + (( new_moonraker_obico_count == 1 )) && status_msg "Installing Obico ..." ### Step 5: Clone the moonraker-obico repo clone_moonraker_obico "${MOONRAKER_OBICO_REPO}" @@ -244,17 +243,16 @@ function moonraker_obico_setup_dialog() { if (( ${#not_linked_instances[@]} > 0 )); then top_border if (( moonraker_count == 1 )); then - printf "|${green}%-55s${white}|\n" " Moonraker-obico not linked to the server!" + printf "|${green}%-55s${white}|\n" " Obico not linked to the server!" else - printf "|${green}%-55s${white}|\n" " ${#not_linked_instances[@]} Moonraker-obico instances not linked to the server!" + printf "|${green}%-55s${white}|\n" " ${#not_linked_instances[@]} Obico instances not linked to the server!" for i in "${not_linked_instances[@]}"; do printf "|${cyan}%-57s${white}|\n" " ● moonraker-obico-${moonraker_names[${i}]}" done fi blank_line - echo -e "| To link to your Obico Server account, you need to |" - echo -e "| obtain the 6-digit verification code in the Obico |" - echo -e "| mobile or web app. For more information, visit: |" + echo -e "| It will take only 10 seconds to link printer to Obico.|" + echo -e "| For more information, visit: |" echo -e "| https://www.obico.io/docs/user-guides/klipper-setup/ |" blank_line echo -e "| If you don't want to link the printer now, you can |" @@ -272,7 +270,7 @@ function moonraker_obico_setup_dialog() { break;; N|n|No|no) select_msg "No" - abort_msg "Exiting Moonraker-obico setup ...\n" + abort_msg "Exiting Obico setup ...\n" return;; *) error_msg "Invalid Input!";; @@ -295,13 +293,13 @@ function moonraker_obico_setup_dialog() { function clone_moonraker_obico() { local repo=${1} - status_msg "Cloning Moonraker-obico from ${repo} ..." - ### force remove existing Moonraker-obico dir + status_msg "Cloning Obico from ${repo} ..." + ### force remove existing Obico dir [[ -d "${MOONRAKER_OBICO_DIR}" ]] && rm -rf "${MOONRAKER_OBICO_DIR}" cd "${HOME}" || exit 1 if ! git clone "${repo}" "${MOONRAKER_OBICO_DIR}"; then - print_error "Cloning Moonraker-obico from\n ${repo}\n failed!" + print_error "Cloning Obico from\n ${repo}\n failed!" exit 1 fi } @@ -316,7 +314,7 @@ function moonraker_obico_install() { function remove_moonraker_obico_systemd() { [[ -z $(moonraker_obico_systemd) ]] && return - status_msg "Removing Moonraker-obico Systemd Services ..." + status_msg "Removing Obico Systemd Services ..." for service in $(moonraker_obico_systemd | cut -d"/" -f5); do status_msg "Removing ${service} ..." @@ -329,7 +327,7 @@ function remove_moonraker_obico_systemd() { ### reloading units sudo systemctl daemon-reload sudo systemctl reset-failed - ok_msg "Moonraker-obico Services removed!" + ok_msg "Obico Services removed!" } function remove_moonraker_obico_logs() { @@ -361,7 +359,7 @@ function remove_legacy_moonraker_obico_logs() { function remove_moonraker_obico_dir() { [[ ! -d ${MOONRAKER_OBICO_DIR} ]] && return - status_msg "Removing Moonraker-obico directory ..." + status_msg "Removing Obico directory ..." rm -rf "${MOONRAKER_OBICO_DIR}" ok_msg "Directory removed!" } @@ -380,7 +378,7 @@ function remove_moonraker_obico() { remove_moonraker_obico_dir remove_moonraker_obico_env - print_confirm "Moonraker-obico was successfully removed!" + print_confirm "Obico was successfully removed!" return } @@ -394,7 +392,7 @@ function update_moonraker_obico() { if [[ ! -d ${MOONRAKER_OBICO_DIR} ]]; then clone_moonraker_obico "${MOONRAKER_OBICO_REPO}" else - status_msg "Updating Moonraker-obico ..." + status_msg "Updating Obico ..." cd "${MOONRAKER_OBICO_DIR}" && git pull fi diff --git a/scripts/octoeverywhere.sh b/scripts/octoeverywhere.sh index d8945f0..49a0f96 100644 --- a/scripts/octoeverywhere.sh +++ b/scripts/octoeverywhere.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/octoprint.sh b/scripts/octoprint.sh index ecdd874..40640ff 100644 --- a/scripts/octoprint.sh +++ b/scripts/octoprint.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/pretty_gcode.sh b/scripts/pretty_gcode.sh index b9a334a..a3e1130 100644 --- a/scripts/pretty_gcode.sh +++ b/scripts/pretty_gcode.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/rollback.sh b/scripts/rollback.sh index 9b3038d..8cf837d 100755 --- a/scripts/rollback.sh +++ b/scripts/rollback.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/switch_klipper_repo.sh b/scripts/switch_klipper_repo.sh index 47a6d9d..7f224c2 100644 --- a/scripts/switch_klipper_repo.sh +++ b/scripts/switch_klipper_repo.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -77,10 +77,12 @@ function change_klipper_repo_menu() { error_msg "Invalid command!";; esac done + break else status_msg "Set custom Klipper repository to:\n ● Repository: ${repos[${option}]}\n ● Branch: ${branches[${option}]}" set_custom_klipper_repo "${repos[${option}]}" "${branches[${option}]}" ok_msg "This repo will now be used for new Klipper installations!\n" + break fi elif [[ ${option} =~ ${back} ]]; then diff --git a/scripts/ui/advanced_menu.sh b/scripts/ui/advanced_menu.sh index 74bdfd0..12923e5 100755 --- a/scripts/ui/advanced_menu.sh +++ b/scripts/ui/advanced_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/ui/backup_menu.sh b/scripts/ui/backup_menu.sh index 297c2f0..c56ed02 100755 --- a/scripts/ui/backup_menu.sh +++ b/scripts/ui/backup_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -25,7 +25,7 @@ function backup_ui() { echo -e "| | |" echo -e "| Klipper Webinterface: | Other: |" echo -e "| 5) [Mainsail] | 9) [Telegram Bot] |" - echo -e "| 6) [Fluidd] | |" + echo -e "| 6) [Fluidd] | 10) [OctoEverywhere] |" back_footer } @@ -54,6 +54,8 @@ function backup_menu() { do_action "backup_octoprint" "backup_ui";; 9) do_action "backup_telegram_bot" "backup_ui";; + 10) + do_action "backup_octoeverywhere" "backup_ui";; B|b) clear; main_menu; break;; *) diff --git a/scripts/ui/general_ui.sh b/scripts/ui/general_ui.sh index b688ae7..2abf794 100755 --- a/scripts/ui/general_ui.sh +++ b/scripts/ui/general_ui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/ui/install_menu.sh b/scripts/ui/install_menu.sh index 5bee336..d318d8d 100755 --- a/scripts/ui/install_menu.sh +++ b/scripts/ui/install_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -35,7 +35,7 @@ function install_ui() { } function install_menu() { - clear -x && sudo -v && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui + clear -x && sudo true && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui print_header install_ui diff --git a/scripts/ui/main_menu.sh b/scripts/ui/main_menu.sh index 07cc5ab..e521ba3 100755 --- a/scripts/ui/main_menu.sh +++ b/scripts/ui/main_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -57,7 +57,7 @@ function print_status() { elif [[ ${status} == "Incomplete!" ]]; then status="${yellow}${status}${white}" elif [[ ${status} == "Not linked!" ]]; then - ### "Not linked!" is only required for Moonraker-obico + ### "Not linked!" is only required for Obico for Klipper status="${yellow}${status}${white}" else status="${green}${status}${white}" diff --git a/scripts/ui/remove_menu.sh b/scripts/ui/remove_menu.sh index 4a9485e..ef111b0 100755 --- a/scripts/ui/remove_menu.sh +++ b/scripts/ui/remove_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/ui/settings_menu.sh b/scripts/ui/settings_menu.sh index 117eb76..0cf4835 100755 --- a/scripts/ui/settings_menu.sh +++ b/scripts/ui/settings_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/ui/update_menu.sh b/scripts/ui/update_menu.sh index eab946c..cf2bbdc 100755 --- a/scripts/ui/update_menu.sh +++ b/scripts/ui/update_menu.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # @@ -41,7 +41,7 @@ function update_ui() { } function update_menu() { - clear -x && sudo -v && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui + clear -x && sudo true && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui do_action "" "update_ui" local action diff --git a/scripts/upload_log.sh b/scripts/upload_log.sh index 9772524..97f2e88 100755 --- a/scripts/upload_log.sh +++ b/scripts/upload_log.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh # diff --git a/scripts/utilities.sh b/scripts/utilities.sh index d95647c..ef72b8b 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash #=======================================================================# -# Copyright (C) 2020 - 2023 Dominik Willner # +# Copyright (C) 2020 - 2024 Dominik Willner # # # # This file is part of KIAUH - Klipper Installation And Update Helper # # https://github.com/dw-0/kiauh #