feat: cli with typer

This commit is contained in:
张泊明518370910136 2021-06-10 23:32:27 +08:00
parent 4cd3bf3285
commit 8aec08f7d1
7 changed files with 62 additions and 6 deletions

2
.gitignore vendored
View File

@ -294,3 +294,5 @@ dmypy.json
*.code-workspace
# End of https://www.toptal.com/developers/gitignore/api/vscode,python
repos/

View File

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

View File

@ -1 +1,51 @@
__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()

View File

@ -17,7 +17,7 @@ class Settings(BaseSettings):
org_name: str = ""
# git
repos_dir: str = ""
repos_dir: str = "./repos"
class Config:
env_file = ".env"

View File

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

View File

@ -1,3 +1,4 @@
canvasapi>=2.2.0
focs_gitea>=1.0.0
pydantic[dotenv]>=1.8.1
typer[all]>=0.3.2

View File

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