From b9c9feef3cf49cda04f32559d5c8284c0a69a1c6 Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sun, 10 Nov 2024 20:14:47 +0100 Subject: [PATCH] refactor: clone repo in repo switch routine only if there is already a repo present Signed-off-by: Dominik Willner --- kiauh/core/menus/settings_menu.py | 22 +++++++++++++++------- kiauh/procedures/switch_repo.py | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/kiauh/core/menus/settings_menu.py b/kiauh/core/menus/settings_menu.py index 8204f29..278301b 100644 --- a/kiauh/core/menus/settings_menu.py +++ b/kiauh/core/menus/settings_menu.py @@ -9,15 +9,19 @@ from __future__ import annotations import textwrap +from pathlib import Path from typing import Literal, Tuple, Type +from components.klipper import KLIPPER_DIR from components.klipper.klipper_utils import get_klipper_status +from components.moonraker import MOONRAKER_DIR from components.moonraker.moonraker_utils import get_moonraker_status from core.logger import DialogType, Logger from core.menus import Option from core.menus.base_menu import BaseMenu from core.settings.kiauh_settings import KiauhSettings, RepoSettings from core.types.color import Color +from core.types.component_status import ComponentStatus from procedures.switch_repo import run_switch_repo_routine from utils.git_utils import get_repo_name from utils.input_utils import get_confirm, get_string_input @@ -144,7 +148,7 @@ class SettingsMenu(BaseMenu): return repo, branch - def _set_repo(self, repo_name: Literal["klipper", "moonraker"]) -> None: + def _set_repo(self, repo_name: Literal["klipper", "moonraker"], repo_dir: Path) -> None: repo_url, branch = self._gather_input() display_name = repo_name.capitalize() Logger.print_dialog( @@ -168,22 +172,26 @@ class SettingsMenu(BaseMenu): Logger.print_ok("Changes saved!") else: Logger.print_info( - f"Skipping change of {display_name} source repository ..." + f"Changing of {display_name} source repository canceled ..." ) return - Logger.print_status(f"Switching to {display_name}'s new source repository ...") - self._switch_repo(repo_name) + self._switch_repo(repo_name, repo_dir) + + def _switch_repo(self, name: Literal["klipper", "moonraker"], repo_dir: Path ) -> None: + if not repo_dir.exists(): + return + + Logger.print_status(f"Switching to {name.capitalize()}'s new source repository ...") - def _switch_repo(self, name: Literal["klipper", "moonraker"]) -> None: repo: RepoSettings = self.settings[name] run_switch_repo_routine(name, repo) def set_klipper_repo(self, **kwargs) -> None: - self._set_repo("klipper") + self._set_repo("klipper", KLIPPER_DIR) def set_moonraker_repo(self, **kwargs) -> None: - self._set_repo("moonraker") + self._set_repo("moonraker", MOONRAKER_DIR) def toggle_mainsail_release(self, **kwargs) -> None: self.mainsail_unstable = not self.mainsail_unstable diff --git a/kiauh/procedures/switch_repo.py b/kiauh/procedures/switch_repo.py index 4ddcab7..7bc4ba2 100644 --- a/kiauh/procedures/switch_repo.py +++ b/kiauh/procedures/switch_repo.py @@ -64,7 +64,7 @@ def run_switch_repo_routine( try: # step 2: backup old repo and env - org, repo = get_repo_name(repo_dir) + org, _ = get_repo_name(repo_dir) backup_dir = backup_dir.joinpath(org) bm = BackupManager() repo_dir_backup_path = bm.backup_directory(