From bf5f8ef44286e01c89a3d4b9e1f7999bba4fa6cd Mon Sep 17 00:00:00 2001 From: Indranil012 Date: Wed, 15 Mar 2023 13:32:10 +0530 Subject: [PATCH] fix: duplicate commits --- app/controllers/Releases.py | 22 +++++++++++++++------- app/routers/changelogs.py | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/controllers/Releases.py b/app/controllers/Releases.py index 2103bc1..782289e 100644 --- a/app/controllers/Releases.py +++ b/app/controllers/Releases.py @@ -197,7 +197,7 @@ class Releases: return contributors - async def get_commits(self, repository: str, current_version: str, target_tag: str = "latest") -> str: + async def get_commits(self, repository: str, current_version: str, target_tag: str = "latest") -> list: """Get commit history from a given repository. Args: @@ -206,11 +206,13 @@ class Releases: target_tag (str): lateset(default), prerelease, recent, tag_name Returns: - str: string containing the repository's commits between version + list: list containing the repository's commits between version """ - commits = "" + commits = [] releases = await self.httpx_client.get(f"https://api.github.com/repos/{repository}/releases").json() - target_version = await self.get_tag_release(repository, target_tag)['tag_name'] + target_release = await self.get_tag_release(repository, target_tag) + target_version = target_release['tag_name'] + target_version = "".join(findall("\d+", target_version)) current_version = "".join(findall("\d+", current_version)) @@ -225,10 +227,16 @@ class Releases: for release in releases: if target_version > current_version and release['tag_name'] > current_version: - commits += release['body'] + if release['prerelease'] and target_release['prerelease']: + commits.append(release['body']) + + elif not target_release['prerelease'] and not release['prerelease']: + commits.append(release['body']) + elif target_version < current_version and release['tag_name'] == target_version: - commits += release['body'] + commits.append(release['body']) + else: break - # commits need cleanup + # commits need cleanup return commits diff --git a/app/routers/changelogs.py b/app/routers/changelogs.py index df8254c..b100f09 100644 --- a/app/routers/changelogs.py +++ b/app/routers/changelogs.py @@ -13,7 +13,7 @@ config: dict = load_config() @router.get('/commits/{repository}/{current_version}/{target_tag}', response_model=ResponseModels.ChangelogsResponseModel, tags=['ReVanced Tools']) @cache(config['cache']['expire']) -async def commits(repository: str, current_version: str, target_tag: str = "latest") -> str: +async def commits(repository: str, current_version: str, target_tag: str = "latest") -> list: """Get commit history from a given repository. Args: @@ -22,7 +22,7 @@ async def commits(repository: str, current_version: str, target_tag: str = "late target_tag (str): lateset(default), prerelease, recent, tag_name Returns: - str: string containing the repository's commits between version + list: string containing the repository's commits between version """ return await releases.get_commits(repository, current_version, target_tag)