feat(spoolman): add update menu entry and update script

This commit is contained in:
Alessandro Maggi
2024-06-08 11:05:18 +02:00
parent 1a74fef314
commit 6a4433d66b
2 changed files with 72 additions and 18 deletions

View File

@@ -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}"
}

View File

@@ -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