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 []