mirror of
https://github.com/dw-0/kiauh.git
synced 2026-02-02 23:47:46 +05:00
Compare commits
2 Commits
5414aba299
...
1f9d4c823a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f9d4c823a | ||
|
|
c8df9427b3 |
@@ -8,7 +8,7 @@
|
|||||||
# ======================================================================= #
|
# ======================================================================= #
|
||||||
|
|
||||||
|
|
||||||
from typing import List
|
from typing import List, Optional
|
||||||
|
|
||||||
from components.klipper.klipper import Klipper
|
from components.klipper.klipper import Klipper
|
||||||
from components.moonraker.moonraker import Moonraker
|
from components.moonraker.moonraker import Moonraker
|
||||||
@@ -27,6 +27,7 @@ def run_client_config_removal(
|
|||||||
client_config: BaseWebClientConfig,
|
client_config: BaseWebClientConfig,
|
||||||
kl_instances: List[Klipper],
|
kl_instances: List[Klipper],
|
||||||
mr_instances: List[Moonraker],
|
mr_instances: List[Moonraker],
|
||||||
|
svc: Optional[BackupService] = None,
|
||||||
) -> Message:
|
) -> Message:
|
||||||
completion_msg = Message(
|
completion_msg = Message(
|
||||||
title=f"{client_config.display_name} Removal Process completed",
|
title=f"{client_config.display_name} Removal Process completed",
|
||||||
@@ -36,12 +37,15 @@ def run_client_config_removal(
|
|||||||
if run_remove_routines(client_config.config_dir):
|
if run_remove_routines(client_config.config_dir):
|
||||||
completion_msg.text.append(f"● {client_config.display_name} removed")
|
completion_msg.text.append(f"● {client_config.display_name} removed")
|
||||||
|
|
||||||
BackupService().backup_printer_config_dir()
|
if svc is None:
|
||||||
|
svc = BackupService()
|
||||||
|
|
||||||
|
svc.backup_moonraker_conf()
|
||||||
completion_msg = remove_moonraker_config_section(
|
completion_msg = remove_moonraker_config_section(
|
||||||
completion_msg, client_config, mr_instances
|
completion_msg, client_config, mr_instances
|
||||||
)
|
)
|
||||||
|
|
||||||
|
svc.backup_printer_cfg()
|
||||||
completion_msg = remove_printer_config_section(
|
completion_msg = remove_printer_config_section(
|
||||||
completion_msg, client_config, kl_instances
|
completion_msg, client_config, kl_instances
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ def run_client_removal(
|
|||||||
)
|
)
|
||||||
mr_instances: List[Moonraker] = get_instances(Moonraker)
|
mr_instances: List[Moonraker] = get_instances(Moonraker)
|
||||||
kl_instances: List[Klipper] = get_instances(Klipper)
|
kl_instances: List[Klipper] = get_instances(Klipper)
|
||||||
|
svc = BackupService()
|
||||||
|
|
||||||
if backup_config:
|
if backup_config:
|
||||||
version = ""
|
version = ""
|
||||||
@@ -49,7 +50,6 @@ def run_client_removal(
|
|||||||
with open(src.joinpath(".version"), "r") as v:
|
with open(src.joinpath(".version"), "r") as v:
|
||||||
version = v.readlines()[0]
|
version = v.readlines()[0]
|
||||||
|
|
||||||
svc = BackupService()
|
|
||||||
target_path = svc.backup_root.joinpath(f"{client.client_dir.name}_{version}")
|
target_path = svc.backup_root.joinpath(f"{client.client_dir.name}_{version}")
|
||||||
success = svc.backup_file(
|
success = svc.backup_file(
|
||||||
source_path=client.config_file,
|
source_path=client.config_file,
|
||||||
@@ -67,7 +67,7 @@ def run_client_removal(
|
|||||||
if remove_client_nginx_logs(client, kl_instances):
|
if remove_client_nginx_logs(client, kl_instances):
|
||||||
completion_msg.text.append("● NGINX logs removed")
|
completion_msg.text.append("● NGINX logs removed")
|
||||||
|
|
||||||
BackupService().backup_moonraker_conf()
|
svc.backup_moonraker_conf()
|
||||||
section = f"update_manager {client_name}"
|
section = f"update_manager {client_name}"
|
||||||
handled_instances: List[Moonraker] = remove_config_section(
|
handled_instances: List[Moonraker] = remove_config_section(
|
||||||
section, mr_instances
|
section, mr_instances
|
||||||
@@ -83,6 +83,7 @@ def run_client_removal(
|
|||||||
client.client_config,
|
client.client_config,
|
||||||
kl_instances,
|
kl_instances,
|
||||||
mr_instances,
|
mr_instances,
|
||||||
|
svc,
|
||||||
)
|
)
|
||||||
if cfg_completion_msg.color == Color.GREEN:
|
if cfg_completion_msg.color == Color.GREEN:
|
||||||
completion_msg.text.extend(cfg_completion_msg.text[1:])
|
completion_msg.text.extend(cfg_completion_msg.text[1:])
|
||||||
|
|||||||
@@ -100,11 +100,11 @@ class SettingsMenu(BaseMenu):
|
|||||||
def trim_repo_url(repo: str) -> str:
|
def trim_repo_url(repo: str) -> str:
|
||||||
return repo.replace(".git", "").replace("https://", "").replace("git@", "")
|
return repo.replace(".git", "").replace("https://", "").replace("git@", "")
|
||||||
|
|
||||||
if not klipper_status.repo == "-":
|
if klipper_status.repo:
|
||||||
url = trim_repo_url(klipper_status.repo_url)
|
url = trim_repo_url(klipper_status.repo_url)
|
||||||
self.kl_repo_url = Color.apply(url, Color.CYAN)
|
self.kl_repo_url = Color.apply(url, Color.CYAN)
|
||||||
self.kl_branch = Color.apply(klipper_status.branch, Color.CYAN)
|
self.kl_branch = Color.apply(klipper_status.branch, Color.CYAN)
|
||||||
if not moonraker_status.repo == "-":
|
if moonraker_status.repo:
|
||||||
url = trim_repo_url(moonraker_status.repo_url)
|
url = trim_repo_url(moonraker_status.repo_url)
|
||||||
self.mr_repo_url = Color.apply(url, Color.CYAN)
|
self.mr_repo_url = Color.apply(url, Color.CYAN)
|
||||||
self.mr_branch = Color.apply(moonraker_status.branch, Color.CYAN)
|
self.mr_branch = Color.apply(moonraker_status.branch, Color.CYAN)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ from utils.instance_utils import get_instances
|
|||||||
class BackupService:
|
class BackupService:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._backup_root = Path.home().joinpath("kiauh_backups")
|
self._backup_root = Path.home().joinpath("kiauh_backups")
|
||||||
|
self._timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def backup_root(self) -> Path:
|
def backup_root(self) -> Path:
|
||||||
@@ -29,7 +30,7 @@ class BackupService:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def timestamp(self) -> str:
|
def timestamp(self) -> str:
|
||||||
return datetime.now().strftime("%Y%m%d-%H%M%S")
|
return self._timestamp
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# GENERIC BACKUP METHODS
|
# GENERIC BACKUP METHODS
|
||||||
@@ -69,6 +70,10 @@ class BackupService:
|
|||||||
|
|
||||||
backup_dir.mkdir(parents=True, exist_ok=True)
|
backup_dir.mkdir(parents=True, exist_ok=True)
|
||||||
target_path = backup_dir.joinpath(filename)
|
target_path = backup_dir.joinpath(filename)
|
||||||
|
if target_path.exists():
|
||||||
|
Logger.print_info(f"File '{target_path}' already exists. Skipping ...")
|
||||||
|
return True
|
||||||
|
|
||||||
shutil.copy2(source_path, target_path)
|
shutil.copy2(source_path, target_path)
|
||||||
|
|
||||||
Logger.print_ok(
|
Logger.print_ok(
|
||||||
@@ -112,14 +117,25 @@ class BackupService:
|
|||||||
|
|
||||||
if backup_path.exists():
|
if backup_path.exists():
|
||||||
Logger.print_info(f"Reusing existing backup directory '{backup_path}'")
|
Logger.print_info(f"Reusing existing backup directory '{backup_path}'")
|
||||||
|
for item in source_path.rglob("*"):
|
||||||
shutil.copytree(
|
relative_path = item.relative_to(source_path)
|
||||||
source_path,
|
target_item = backup_path.joinpath(relative_path)
|
||||||
backup_path,
|
if item.is_file():
|
||||||
dirs_exist_ok=True,
|
if not target_item.exists():
|
||||||
symlinks=True,
|
target_item.parent.mkdir(parents=True, exist_ok=True)
|
||||||
ignore_dangling_symlinks=True,
|
shutil.copy2(item, target_item)
|
||||||
)
|
else:
|
||||||
|
Logger.print_info(f"File '{target_item}' already exists. Skipping...")
|
||||||
|
elif item.is_dir():
|
||||||
|
target_item.mkdir(parents=True, exist_ok=True)
|
||||||
|
else:
|
||||||
|
shutil.copytree(
|
||||||
|
source_path,
|
||||||
|
backup_path,
|
||||||
|
dirs_exist_ok=True,
|
||||||
|
symlinks=True,
|
||||||
|
ignore_dangling_symlinks=True,
|
||||||
|
)
|
||||||
|
|
||||||
Logger.print_ok(
|
Logger.print_ok(
|
||||||
f"Successfully backed up '{source_path}' to '{backup_path}'"
|
f"Successfully backed up '{source_path}' to '{backup_path}'"
|
||||||
|
|||||||
Reference in New Issue
Block a user