fix: checkout to single repo

This commit is contained in:
张泊明518370910136 2021-10-13 02:54:35 +08:00
parent 9ce50c6964
commit 3de4dccb79
No known key found for this signature in database
GPG Key ID: FBEF5DE8B9F4C629
3 changed files with 20 additions and 21 deletions

View File

@ -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:

View File

@ -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}")

View File

@ -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():