From 2683d2cecfedfd6810e978341c6d564210fd9c61 Mon Sep 17 00:00:00 2001 From: BoYanZh Date: Sun, 8 May 2022 22:10:27 +0800 Subject: [PATCH] feat: create milestones on gitea --- joint_teapot/app.py | 7 +++++++ joint_teapot/teapot.py | 6 ++++++ joint_teapot/workers/gitea.py | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/joint_teapot/app.py b/joint_teapot/app.py index 70c36aa..5b735a8 100644 --- a/joint_teapot/app.py +++ b/joint_teapot/app.py @@ -62,6 +62,13 @@ def create_issue_for_repos(repo_names: List[str], title: str, body: str) -> None tea.pot.create_issue_for_repos(repo_names, title, body) +@app.command("create-milestones", help="create milestones on gitea") +def create_milestone_for_repos( + repo_names: List[str], title: str, description: str, due_on: datetime +) -> None: + tea.pot.create_milestone_for_repos(repo_names, title, description, due_on) + + @app.command("check-issues", help="check the existence of issue by title on gitea") def check_exist_issue_by_title(repo_names: List[str], title: str) -> None: echo("\n".join(tea.pot.check_exist_issue_by_title(repo_names, title))) diff --git a/joint_teapot/teapot.py b/joint_teapot/teapot.py index e4cf87d..29233fd 100644 --- a/joint_teapot/teapot.py +++ b/joint_teapot/teapot.py @@ -110,6 +110,12 @@ class Teapot: for repo_name in repo_names: self.gitea.create_issue(repo_name, title, body) + def create_milestone_for_repos( + self, repo_names: List[str], title: str, description: str, due_on: datetime + ) -> None: + for repo_name in repo_names: + self.gitea.create_milestone(repo_name, title, description, due_on) + def check_exist_issue_by_title( self, repo_names: List[str], title: str ) -> List[str]: diff --git a/joint_teapot/workers/gitea.py b/joint_teapot/workers/gitea.py index dacf361..14f755d 100644 --- a/joint_teapot/workers/gitea.py +++ b/joint_teapot/workers/gitea.py @@ -1,3 +1,4 @@ +from datetime import datetime from enum import Enum from functools import lru_cache from typing import Any, Callable, Dict, List, Optional, Tuple @@ -330,6 +331,23 @@ class Gitea: body={"title": title, "body": body, "assignees": assignees}, ) + def create_milestone( + self, + repo_name: str, + title: str, + description: str, + due_on: datetime, + ) -> None: + self.issue_api.issue_create_milestone( + self.org_name, + repo_name, + body={ + "title": title, + "description": description, + "due_on": due_on.strftime("%Y-%m-%dT%H:%M:%S.%fZ"), + }, + ) + def check_exist_issue_by_title(self, repo_name: str, title: str) -> bool: for issue in list_all( self.issue_api.issue_list_issues, self.org_name, repo_name