From 3de4dccb79d4aef667deea61d5028bcfef0a439d Mon Sep 17 00:00:00 2001 From: BoYanZh Date: Wed, 13 Oct 2021 02:54:35 +0800 Subject: [PATCH] fix: checkout to single repo --- joint_teapot/__init__.py | 2 ++ joint_teapot/__main__.py | 8 +++++--- joint_teapot/teapot.py | 31 +++++++++++++------------------ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/joint_teapot/__init__.py b/joint_teapot/__init__.py index dd778ec..e52574e 100644 --- a/joint_teapot/__init__.py +++ b/joint_teapot/__init__.py @@ -1,4 +1,6 @@ from joint_teapot.__main__ import app +from joint_teapot.teapot import Teapot as Teapot +from joint_teapot.utils.logger import logger as logger def main() -> None: diff --git a/joint_teapot/__main__.py b/joint_teapot/__main__.py index e3a18aa..fcfa629 100644 --- a/joint_teapot/__main__.py +++ b/joint_teapot/__main__.py @@ -76,9 +76,11 @@ def check_exist_issue_by_title(repo_names: List[str], title: str) -> None: def checkout_to_repos_by_release_name( repo_names: List[str], release_name: str, due: datetime = Argument("3000-01-01") ) -> None: - failed_repos = tea.pot.checkout_to_repos_by_release_name( - repo_names, release_name, due - ) + failed_repos = [] + for repo_name in repo_names: + succeed = tea.pot.checkout_to_repo_by_release_name(repo_name, release_name, due) + if not succeed: + failed_repos.append(repo_name) echo(f"failed repos: {failed_repos}") diff --git a/joint_teapot/teapot.py b/joint_teapot/teapot.py index d488356..bfc0542 100644 --- a/joint_teapot/teapot.py +++ b/joint_teapot/teapot.py @@ -111,24 +111,19 @@ class Teapot: res.append(repo_name) return res - def checkout_to_repos_by_release_name( - self, - repo_names: List[str], - release_name: str, - due: datetime = datetime(3000, 1, 1), - ) -> List[str]: - failed_repos = [] - for repo_name in repo_names: - repo_releases = self.gitea.get_repo_releases(repo_name) - release = first(repo_releases, lambda item: item.name == release_name) - if release is None or release.created_at.replace(tzinfo=None) >= due: - failed_repos.append(repo_name) - continue - self.git.repo_clean_and_checkout(repo_name, f"tags/{release.tag_name}") - logger.info( - f"{self.gitea.org_name}/{repo_name} checkout to tags/{release.tag_name} succeed" - ) - return failed_repos + def checkout_to_repo_by_release_name( + self, repo_name: str, release_name: str, due: datetime = datetime(3000, 1, 1) + ) -> bool: + repo_releases = self.gitea.get_repo_releases(repo_name) + release = first(repo_releases, lambda item: item.name == release_name) + if release is None or release.created_at.replace(tzinfo=None) >= due: + return False + self.git.repo_clean_and_checkout(repo_name, f"tags/{release.tag_name}") + logger.info( + f"{self.gitea.org_name}/{repo_name} checkout to " + f"tags/{release.tag_name} succeed" + ) + return True def get_repos_status(self, commit_lt: int, issue_lt: int) -> None: for repo_name, commit_count, issue_count in self.gitea.get_repos_status():