refactor: clone repo in repo switch routine only if there is already a repo present

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2024-11-10 20:14:47 +01:00
parent d37d047aaa
commit b9c9feef3c
2 changed files with 16 additions and 8 deletions

View File

@@ -9,15 +9,19 @@
from __future__ import annotations from __future__ import annotations
import textwrap import textwrap
from pathlib import Path
from typing import Literal, Tuple, Type from typing import Literal, Tuple, Type
from components.klipper import KLIPPER_DIR
from components.klipper.klipper_utils import get_klipper_status 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 components.moonraker.moonraker_utils import get_moonraker_status
from core.logger import DialogType, Logger from core.logger import DialogType, Logger
from core.menus import Option from core.menus import Option
from core.menus.base_menu import BaseMenu from core.menus.base_menu import BaseMenu
from core.settings.kiauh_settings import KiauhSettings, RepoSettings from core.settings.kiauh_settings import KiauhSettings, RepoSettings
from core.types.color import Color from core.types.color import Color
from core.types.component_status import ComponentStatus
from procedures.switch_repo import run_switch_repo_routine from procedures.switch_repo import run_switch_repo_routine
from utils.git_utils import get_repo_name from utils.git_utils import get_repo_name
from utils.input_utils import get_confirm, get_string_input from utils.input_utils import get_confirm, get_string_input
@@ -144,7 +148,7 @@ class SettingsMenu(BaseMenu):
return repo, branch 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() repo_url, branch = self._gather_input()
display_name = repo_name.capitalize() display_name = repo_name.capitalize()
Logger.print_dialog( Logger.print_dialog(
@@ -168,22 +172,26 @@ class SettingsMenu(BaseMenu):
Logger.print_ok("Changes saved!") Logger.print_ok("Changes saved!")
else: else:
Logger.print_info( Logger.print_info(
f"Skipping change of {display_name} source repository ..." f"Changing of {display_name} source repository canceled ..."
) )
return return
Logger.print_status(f"Switching to {display_name}'s new source repository ...") self._switch_repo(repo_name, repo_dir)
self._switch_repo(repo_name)
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] repo: RepoSettings = self.settings[name]
run_switch_repo_routine(name, repo) run_switch_repo_routine(name, repo)
def set_klipper_repo(self, **kwargs) -> None: def set_klipper_repo(self, **kwargs) -> None:
self._set_repo("klipper") self._set_repo("klipper", KLIPPER_DIR)
def set_moonraker_repo(self, **kwargs) -> None: def set_moonraker_repo(self, **kwargs) -> None:
self._set_repo("moonraker") self._set_repo("moonraker", MOONRAKER_DIR)
def toggle_mainsail_release(self, **kwargs) -> None: def toggle_mainsail_release(self, **kwargs) -> None:
self.mainsail_unstable = not self.mainsail_unstable self.mainsail_unstable = not self.mainsail_unstable

View File

@@ -64,7 +64,7 @@ def run_switch_repo_routine(
try: try:
# step 2: backup old repo and env # 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) backup_dir = backup_dir.joinpath(org)
bm = BackupManager() bm = BackupManager()
repo_dir_backup_path = bm.backup_directory( repo_dir_backup_path = bm.backup_directory(