diff --git a/kiauh/components/klipperscreen/klipperscreen.py b/kiauh/components/klipperscreen/klipperscreen.py index 8fe461c..b62a3f5 100644 --- a/kiauh/components/klipperscreen/klipperscreen.py +++ b/kiauh/components/klipperscreen/klipperscreen.py @@ -96,6 +96,7 @@ def install_klipperscreen() -> None: def patch_klipperscreen_update_manager(instances: List[Moonraker]) -> None: + BackupService().backup_moonraker_conf() add_config_section( section=KLIPPERSCREEN_UPDATER_SECTION_NAME, instances=instances, @@ -182,6 +183,7 @@ def remove_klipperscreen() -> None: mr_instances: List[Moonraker] = get_instances(Moonraker) if mr_instances: Logger.print_status("Removing KlipperScreen from update manager ...") + BackupService().backup_moonraker_conf() remove_config_section("update_manager KlipperScreen", mr_instances) Logger.print_ok("KlipperScreen successfully removed from update manager!") diff --git a/kiauh/components/webui_client/client_config/client_config_remove.py b/kiauh/components/webui_client/client_config/client_config_remove.py index 75a1d8b..351c950 100644 --- a/kiauh/components/webui_client/client_config/client_config_remove.py +++ b/kiauh/components/webui_client/client_config/client_config_remove.py @@ -16,6 +16,7 @@ from components.webui_client.base_data import BaseWebClientConfig from core.logger import Logger from core.services.message_service import Message from core.types.color import Color +from utils.common import backup_printer_config_dir from utils.config_utils import remove_config_section from utils.fs_utils import run_remove_routines from utils.instance_type import InstanceType @@ -35,6 +36,8 @@ def run_client_config_removal( if run_remove_routines(client_config.config_dir): completion_msg.text.append(f"● {client_config.display_name} removed") + backup_printer_config_dir() + completion_msg = remove_moonraker_config_section( completion_msg, client_config, mr_instances ) diff --git a/kiauh/components/webui_client/client_remove.py b/kiauh/components/webui_client/client_remove.py index 3c8ea00..4d64779 100644 --- a/kiauh/components/webui_client/client_remove.py +++ b/kiauh/components/webui_client/client_remove.py @@ -67,6 +67,7 @@ def run_client_removal( if remove_client_nginx_logs(client, kl_instances): completion_msg.text.append("● NGINX logs removed") + BackupService().backup_moonraker_conf() section = f"update_manager {client_name}" handled_instances: List[Moonraker] = remove_config_section( section, mr_instances diff --git a/kiauh/extensions/mobileraker/mobileraker_extension.py b/kiauh/extensions/mobileraker/mobileraker_extension.py index 5dd7ebe..2615d57 100644 --- a/kiauh/extensions/mobileraker/mobileraker_extension.py +++ b/kiauh/extensions/mobileraker/mobileraker_extension.py @@ -151,6 +151,7 @@ class MobilerakerExtension(BaseExtension): Logger.print_status( "Removing Mobileraker's companion from update manager ..." ) + BackupService().backup_moonraker_conf() remove_config_section(MOBILERAKER_UPDATER_SECTION_NAME, mr_instances) Logger.print_ok( "Mobileraker's companion successfully removed from update manager!" @@ -162,6 +163,7 @@ class MobilerakerExtension(BaseExtension): Logger.print_error(f"Error removing Mobileraker's companion:\n{e}") def _patch_mobileraker_update_manager(self, instances: List[Moonraker]) -> None: + BackupService().backup_moonraker_conf() add_config_section( section=MOBILERAKER_UPDATER_SECTION_NAME, instances=instances, diff --git a/kiauh/extensions/obico/moonraker_obico_extension.py b/kiauh/extensions/obico/moonraker_obico_extension.py index 82f92b2..986b153 100644 --- a/kiauh/extensions/obico/moonraker_obico_extension.py +++ b/kiauh/extensions/obico/moonraker_obico_extension.py @@ -31,7 +31,11 @@ from extensions.obico import ( from extensions.obico.moonraker_obico import ( MoonrakerObico, ) -from utils.common import check_install_dependencies, moonraker_exists +from utils.common import ( + backup_printer_config_dir, + check_install_dependencies, + moonraker_exists, +) from utils.config_utils import ( add_config_section, remove_config_section, @@ -119,6 +123,8 @@ class ObicoExtension(BaseExtension): cmd_sysctl_manage("daemon-reload") + backup_printer_config_dir() + # add to klippers config self._patch_printer_cfg(kl_instances) InstanceManager.restart_all(kl_instances) @@ -165,6 +171,7 @@ class ObicoExtension(BaseExtension): self._remove_obico_instances(ob_instances) self._remove_obico_dir() self._remove_obico_env() + backup_printer_config_dir() remove_config_section(f"include {OBICO_MACROS_CFG_NAME}", kl_instances) remove_config_section(f"include {OBICO_UPDATE_CFG_NAME}", mr_instances) Logger.print_dialog( diff --git a/kiauh/extensions/octoapp/octoapp_extension.py b/kiauh/extensions/octoapp/octoapp_extension.py index ff20c52..642b9d7 100644 --- a/kiauh/extensions/octoapp/octoapp_extension.py +++ b/kiauh/extensions/octoapp/octoapp_extension.py @@ -13,6 +13,7 @@ from components.klipper.klipper import Klipper from components.moonraker.moonraker import Moonraker from core.instance_manager.instance_manager import InstanceManager from core.logger import DialogType, Logger +from core.services.backup_service import BackupService from extensions.base_extension import BaseExtension from extensions.octoapp import ( OA_DEPS_JSON_FILE, @@ -133,6 +134,7 @@ class OctoappExtension(BaseExtension): self._remove_OA_store_dirs() self._remove_OA_dir() self._remove_OA_env() + BackupService().backup_moonraker_conf() remove_config_section(f"include {OA_SYS_CFG_NAME}", mr_instances) run_remove_routines(OA_INSTALLER_LOG_FILE) Logger.print_dialog( diff --git a/kiauh/extensions/octoeverywhere/octoeverywhere_extension.py b/kiauh/extensions/octoeverywhere/octoeverywhere_extension.py index 2907923..ae1433f 100644 --- a/kiauh/extensions/octoeverywhere/octoeverywhere_extension.py +++ b/kiauh/extensions/octoeverywhere/octoeverywhere_extension.py @@ -12,6 +12,7 @@ from typing import List from components.moonraker.moonraker import Moonraker from core.instance_manager.instance_manager import InstanceManager from core.logger import DialogType, Logger +from core.services.backup_service import BackupService from extensions.base_extension import BaseExtension from extensions.octoeverywhere import ( OE_DEPS_JSON_FILE, @@ -133,6 +134,7 @@ class OctoeverywhereExtension(BaseExtension): self._remove_oe_instances(ob_instances) self._remove_oe_dir() self._remove_oe_env() + BackupService().backup_moonraker_conf() remove_config_section(f"include {OE_SYS_CFG_NAME}", mr_instances) run_remove_routines(OE_INSTALLER_LOG_FILE) Logger.print_dialog( diff --git a/kiauh/extensions/spoolman/spoolman_extension.py b/kiauh/extensions/spoolman/spoolman_extension.py index 42aa521..072e5bb 100644 --- a/kiauh/extensions/spoolman/spoolman_extension.py +++ b/kiauh/extensions/spoolman/spoolman_extension.py @@ -100,6 +100,7 @@ class SpoolmanExtension(BaseExtension): mr_instances: List[Moonraker] = mrsvc.get_all_instances() Logger.print_status("Removing Spoolman configuration from moonraker.conf...") + BackupService().backup_moonraker_conf() remove_config_section("spoolman", mr_instances) Logger.print_status("Removing Spoolman from moonraker.asvc...") @@ -289,6 +290,7 @@ class SpoolmanExtension(BaseExtension): mrsvc.load_instances() mr_instances = mrsvc.get_all_instances() + BackupService().backup_moonraker_conf() # noinspection HttpUrlsUsage add_config_section( section="spoolman", diff --git a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py index 458b3e8..ed45be5 100644 --- a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py +++ b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py @@ -13,6 +13,7 @@ from typing import List from components.moonraker.moonraker import Moonraker from core.instance_manager.instance_manager import InstanceManager from core.logger import DialogType, Logger +from core.services.backup_service import BackupService from extensions.base_extension import BaseExtension from extensions.telegram_bot import TG_BOT_REPO, TG_BOT_REQ_FILE from extensions.telegram_bot.moonraker_telegram_bot import ( @@ -105,6 +106,7 @@ class TelegramBotExtension(BaseExtension): cmd_sysctl_manage("daemon-reload") # add to moonraker update manager + BackupService().backup_moonraker_conf() self._patch_bot_update_manager(mr_instances) # restart moonraker @@ -150,6 +152,7 @@ class TelegramBotExtension(BaseExtension): self._remove_bot_instances(tb_instances) self._remove_bot_dir() self._remove_bot_env() + BackupService().backup_moonraker_conf() remove_config_section("update_manager moonraker-telegram-bot", mr_instances) self._delete_bot_logs(tb_instances) except Exception as e: diff --git a/kiauh/utils/config_utils.py b/kiauh/utils/config_utils.py index 42eabbe..cddfa16 100644 --- a/kiauh/utils/config_utils.py +++ b/kiauh/utils/config_utils.py @@ -73,7 +73,7 @@ def add_config_section_at_top(section: str, instances: List[InstanceType]) -> No tmp.writelines(org_content) cfg_file.unlink() - shutil.move(tmp_cfg_path, cfg_file) + shutil.move(tmp_cfg_path.as_posix(), cfg_file) Logger.print_ok("OK!") @@ -81,7 +81,7 @@ def add_config_section_at_top(section: str, instances: List[InstanceType]) -> No def remove_config_section( section: str, instances: List[InstanceType] ) -> List[InstanceType]: - removed_from: List[instances] = [] + removed_from: List[InstanceType] = [] for instance in instances: cfg_file = instance.cfg_file Logger.print_status(f"Remove section '[{section}]' from '{cfg_file}' ...")