diff --git a/kiauh/core/backup_manager/backup_manager.py b/kiauh/core/backup_manager/backup_manager.py index 703be60..cdec57b 100644 --- a/kiauh/core/backup_manager/backup_manager.py +++ b/kiauh/core/backup_manager/backup_manager.py @@ -79,14 +79,14 @@ class BackupManager: if source is None or not Path(source).exists(): Logger.print_info("Source directory does not exist! Skipping ...") - return + return None target = self.backup_root_dir if target is None else target try: date = get_current_date().get("date") time = get_current_date().get("time") backup_target = target.joinpath(f"{name.lower()}-{date}-{time}") - shutil.copytree(source, backup_target, ignore=self.ignore_folders_func) + shutil.copytree(source, backup_target, ignore=self.ignore_folders_func, ignore_dangling_symlinks=True) Logger.print_ok("Backup successful!") return backup_target diff --git a/kiauh/utils/common.py b/kiauh/utils/common.py index 004613b..2880e6d 100644 --- a/kiauh/utils/common.py +++ b/kiauh/utils/common.py @@ -43,7 +43,8 @@ def get_kiauh_version() -> str: Helper method to get the current KIAUH version by reading the latest tag :return: string of the latest tag """ - return get_local_tags(Path(__file__).parent.parent)[-1] + lastest_tag: str = get_local_tags(Path(__file__).parent.parent)[-1] + return lastest_tag def convert_camelcase_to_kebabcase(name: str) -> str: diff --git a/kiauh/utils/git_utils.py b/kiauh/utils/git_utils.py index 1ffdd4b..a658607 100644 --- a/kiauh/utils/git_utils.py +++ b/kiauh/utils/git_utils.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +import re import shutil import urllib.request from http.client import HTTPResponse @@ -118,7 +119,7 @@ def get_local_tags(repo_path: Path, _filter: str | None = None) -> List[str]: :return: List of tags """ try: - cmd = ["git", "tag", "-l"] + cmd: List[str] = ["git", "tag", "-l"] if _filter is not None: cmd.append(f"'${_filter}'") @@ -129,8 +130,10 @@ def get_local_tags(repo_path: Path, _filter: str | None = None) -> List[str]: cwd=repo_path.as_posix(), ).decode(encoding="utf-8") - tags = result.split("\n") - return tags[:-1] + tags: List[str] = result.split("\n")[:-1] + + return sorted(tags, key=lambda x: [int(i) if i.isdigit() else i for i in + re.split(r'(\d+)', x)]) except CalledProcessError: return []