From 6a4433d66ba948d0c90c43773dfc74a2765b6b2e Mon Sep 17 00:00:00 2001 From: Alessandro Maggi Date: Sat, 8 Jun 2024 11:05:18 +0200 Subject: [PATCH] feat(spoolman): add update menu entry and update script --- scripts/spoolman.sh | 46 +++++++++++++++++++++++++++++++++++++++ scripts/ui/update_menu.sh | 44 ++++++++++++++++++++++--------------- 2 files changed, 72 insertions(+), 18 deletions(-) diff --git a/scripts/spoolman.sh b/scripts/spoolman.sh index e60411d..8792735 100644 --- a/scripts/spoolman.sh +++ b/scripts/spoolman.sh @@ -38,6 +38,22 @@ function install_spoolman() { enable_moonraker_integration_prompt patch_spoolman_update_manager } + +function update_spoolman() { + ### stop and disable old spoolman service + do_action_service "stop" "Spoolman" + do_action_service "disable" "Spoolman" + + mv "${SPOOLMAN_DIR}" "${SPOOLMAN_DIR}_old" + + setup_spoolman_folder + cp "${SPOOLMAN_DIR}_old/.env" "${SPOOLMAN_DIR}/.env" + + start_install_script + + rm -rf "${SPOOLMAN_DIR}_old" +} + function update_moonraker_configs() { local patched moonraker_configs regex env_port regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/config\/moonraker\.conf" @@ -205,3 +221,33 @@ function get_spoolman_status() { echo "Not installed!" fi } + +function get_local_spoolman_version() { + local version + version=$(jq -r '.version' "${SPOOLMAN_DIR}"/release_info.json) + echo "${version}" +} + +function get_remote_spoolman_version() { + local version + version=$(curl -s "${SPOOLMAN_REPO}" | jq -r '.tag_name') + echo "${version}" +} + +function compare_spoolman_versions() { + local local_ver remote_ver + local_ver="$(get_local_spoolman_version)" + remote_ver="$(get_remote_spoolman_version)" + + if [[ ${local_ver} != "${remote_ver}" ]]; then + versions="${yellow}$(printf " %-14s" "${local_ver}")${white}" + versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}" + # add spoolman to application_updates_available in kiauh.ini + add_to_application_updates "spoolman" + else + versions="${green}$(printf " %-14s" "${local_ver}")${white}" + versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}" + fi + + echo "${versions}" +} diff --git a/scripts/ui/update_menu.sh b/scripts/ui/update_menu.sh index 26a3f11..a7cdb44 100755 --- a/scripts/ui/update_menu.sh +++ b/scripts/ui/update_menu.sh @@ -28,23 +28,26 @@ function update_ui() { echo -e "| Touchscreen GUI: |---------------|--------------|" echo -e "| 5) [KlipperScreen] |$(compare_klipperscreen_versions)|" echo -e "| | | |" + echo -e "| Spool Manager: |---------------|--------------|" + echo -e "| 6) [Spoolman] |$(compare_spoolman_versions)|" + echo -e "| | | |" echo -e "| Other: |---------------|--------------|" - echo -e "| 6) [PrettyGCode] |$(compare_prettygcode_versions)|" - echo -e "| 7) [Telegram Bot] |$(compare_telegram_bot_versions)|" - echo -e "| 8) [Obico for Klipper]|$(compare_moonraker_obico_versions)|" - echo -e "| 9) [OctoEverywhere] |$(compare_octoeverywhere_versions)|" - echo -e "| 10) [Mobileraker] |$(compare_mobileraker_versions)|" - echo -e "| 11) [Crowsnest] |$(compare_crowsnest_versions)|" - echo -e "| 12) [OctoApp] |$(compare_octoapp_versions)|" + echo -e "| 7) [PrettyGCode] |$(compare_prettygcode_versions)|" + echo -e "| 8) [Telegram Bot] |$(compare_telegram_bot_versions)|" + echo -e "| 9) [Obico for Klipper]|$(compare_moonraker_obico_versions)|" + echo -e "| 10) [OctoEverywhere] |$(compare_octoeverywhere_versions)|" + echo -e "| 11) [Mobileraker] |$(compare_mobileraker_versions)|" + echo -e "| 12) [Crowsnest] |$(compare_crowsnest_versions)|" + echo -e "| 13) [OctoApp] |$(compare_octoapp_versions)|" echo -e "| |------------------------------|" - echo -e "| 13) [System] | $(check_system_updates) |" + echo -e "| 14) [System] | $(check_system_updates) |" back_footer } function update_menu() { clear -x && sudo true && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui do_action "" "update_ui" - + local action while true; do read -p "${cyan}####### Perform action:${white} " action @@ -62,20 +65,22 @@ function update_menu() { 5) do_action "update_klipperscreen" "update_ui";; 6) - do_action "update_pgc_for_klipper" "update_ui";; + do_action "update_spoolman" "update_ui";; 7) - do_action "update_telegram_bot" "update_ui";; + do_action "update_pgc_for_klipper" "update_ui";; 8) - do_action "update_moonraker_obico" "update_ui";; + do_action "update_telegram_bot" "update_ui";; 9) - do_action "update_octoeverywhere" "update_ui";; + do_action "update_moonraker_obico" "update_ui";; 10) - do_action "update_mobileraker" "update_ui";; + do_action "update_octoeverywhere" "update_ui";; 11) - do_action "update_crowsnest" "update_ui";; + do_action "update_mobileraker" "update_ui";; 12) - do_action "update_octoapp" "update_ui";; + do_action "update_crowsnest" "update_ui";; 13) + do_action "update_octoapp" "update_ui";; + 14) do_action "upgrade_system_packages" "update_ui";; a) do_action "update_all" "update_ui";; @@ -101,7 +106,7 @@ function update_all() { print_confirm "Everything is already up-to-date!" echo; break fi - + echo top_border echo -e "| The following installations will be updated: |" @@ -121,6 +126,9 @@ function update_all() { [[ "${update_arr[*]}" =~ "klipperscreen" ]] && \ echo -e "| ${cyan}● KlipperScreen${white} |" + [[ "${update_arr[*]}" =~ "spoolman" ]] && \ + echo -e "| ${cyan}● SpoolMan${white} |" + [[ "${update_arr[*]}" =~ "pgc_for_klipper" ]] && \ echo -e "| ${cyan}● PrettyGCode for Klipper${white} |" @@ -140,7 +148,7 @@ function update_all() { echo -e "| ${cyan}● System${white} |" bottom_border - + local yn read -p "${cyan}###### Do you want to proceed? (Y/n):${white} " yn case "${yn}" in