feat: cli with typer
This commit is contained in:
parent
4cd3bf3285
commit
8aec08f7d1
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -294,3 +294,5 @@ dmypy.json
|
||||||
*.code-workspace
|
*.code-workspace
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/vscode,python
|
# End of https://www.toptal.com/developers/gitignore/api/vscode,python
|
||||||
|
|
||||||
|
repos/
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
from joint_teapot.__main__ import run
|
||||||
from joint_teapot.teapot import Teapot as Teapot
|
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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Settings(BaseSettings):
|
||||||
org_name: str = ""
|
org_name: str = ""
|
||||||
|
|
||||||
# git
|
# git
|
||||||
repos_dir: str = ""
|
repos_dir: str = "./repos"
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
env_file = ".env"
|
env_file = ".env"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
from joint_teapot import Canvas, Git, Gitea
|
|
||||||
from joint_teapot.utils import first
|
from joint_teapot.utils import first
|
||||||
|
from joint_teapot.workers import Canvas, Git, Gitea
|
||||||
|
|
||||||
|
|
||||||
class Teapot:
|
class Teapot:
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
canvasapi>=2.2.0
|
canvasapi>=2.2.0
|
||||||
focs_gitea>=1.0.0
|
focs_gitea>=1.0.0
|
||||||
pydantic[dotenv]>=1.8.1
|
pydantic[dotenv]>=1.8.1
|
||||||
|
typer[all]>=0.3.2
|
||||||
|
|
1
setup.py
1
setup.py
|
@ -42,5 +42,6 @@ setup(
|
||||||
maintainer_email="bomingzh@sjtu.edu.cn",
|
maintainer_email="bomingzh@sjtu.edu.cn",
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
python_requires=">=3.6",
|
python_requires=">=3.6",
|
||||||
|
entry_points={"console_scripts": ["joint-teapot=joint_teapot:main"]},
|
||||||
install_requires=get_install_requires(),
|
install_requires=get_install_requires(),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user