diff --git a/.gitignore b/.gitignore index 861c40e..36a781e 100644 --- a/.gitignore +++ b/.gitignore @@ -294,3 +294,5 @@ dmypy.json *.code-workspace # End of https://www.toptal.com/developers/gitignore/api/vscode,python + +repos/ diff --git a/joint_teapot/__init__.py b/joint_teapot/__init__.py index 8c741e1..179d693 100644 --- a/joint_teapot/__init__.py +++ b/joint_teapot/__init__.py @@ -1,4 +1,6 @@ +from joint_teapot.__main__ import run from joint_teapot.teapot import Teapot as Teapot -from joint_teapot.workers import Canvas as Canvas -from joint_teapot.workers import Git as Git -from joint_teapot.workers import Gitea as Gitea + + +def main() -> None: + run() diff --git a/joint_teapot/__main__.py b/joint_teapot/__main__.py index 6c8e6b9..b9159db 100644 --- a/joint_teapot/__main__.py +++ b/joint_teapot/__main__.py @@ -1 +1,51 @@ -__version__ = "0.0.0" +__version__ = "0.0.0" + +from datetime import datetime +from typing import List + +import typer + +from joint_teapot.teapot import Teapot + +app = typer.Typer(add_completion=False) +teapot = Teapot() + + +@app.command("create-personal") +def create_personal_repos_for_all_canvas_students() -> None: + teapot.create_personal_repos_for_all_canvas_students() + + +@app.command("create-teams") +def create_teams_and_repos_by_canvas_groups() -> None: + teapot.create_teams_and_repos_by_canvas_groups() + + +@app.command("get-public-keys") +def get_public_key_of_all_canvas_students() -> None: + typer.echo(teapot.get_public_key_of_all_canvas_students()) + + +@app.command("archieve") +def archieve_all_repos() -> None: + teapot.archieve_all_repos() + + +@app.command("create-issues") +def create_issue_for_repos(repo_names: List[str], title: str, body: str) -> None: + teapot.create_issue_for_repos(repo_names, title, body) + + +@app.command("get-release") +def checkout_to_repos_by_release_name( + repo_names: List[str], release_name: str, due: datetime = datetime(3000, 1, 1) +) -> None: + teapot.checkout_to_repos_by_release_name(repo_names, release_name, due) + + +def run() -> None: + app() + + +if __name__ == "__main__": + run() diff --git a/joint_teapot/config.py b/joint_teapot/config.py index ccab502..3968126 100644 --- a/joint_teapot/config.py +++ b/joint_teapot/config.py @@ -17,7 +17,7 @@ class Settings(BaseSettings): org_name: str = "" # git - repos_dir: str = "" + repos_dir: str = "./repos" class Config: env_file = ".env" diff --git a/joint_teapot/teapot.py b/joint_teapot/teapot.py index b3b1c2d..807708c 100644 --- a/joint_teapot/teapot.py +++ b/joint_teapot/teapot.py @@ -1,8 +1,8 @@ from datetime import datetime from typing import Any, Dict, List -from joint_teapot import Canvas, Git, Gitea from joint_teapot.utils import first +from joint_teapot.workers import Canvas, Git, Gitea class Teapot: diff --git a/requirements.txt b/requirements.txt index 6f89ed8..d7dcf00 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ canvasapi>=2.2.0 focs_gitea>=1.0.0 pydantic[dotenv]>=1.8.1 +typer[all]>=0.3.2 diff --git a/setup.py b/setup.py index 5dab258..7f726be 100644 --- a/setup.py +++ b/setup.py @@ -42,5 +42,6 @@ setup( maintainer_email="bomingzh@sjtu.edu.cn", packages=find_packages(), python_requires=">=3.6", + entry_points={"console_scripts": ["joint-teapot=joint_teapot:main"]}, install_requires=get_install_requires(), )