feat: list no collaborator/commit repos
This commit is contained in:
parent
5741675f10
commit
7fa19c3cb9
|
@ -32,7 +32,7 @@ def create_teams_and_repos_by_canvas_groups() -> None:
|
||||||
teapot.create_teams_and_repos_by_canvas_groups()
|
teapot.create_teams_and_repos_by_canvas_groups()
|
||||||
|
|
||||||
|
|
||||||
@app.command("get-public-keys", help="get all public keys on gitea")
|
@app.command("get-public-keys", help="list all public keys on gitea")
|
||||||
def get_public_key_of_all_canvas_students() -> None:
|
def get_public_key_of_all_canvas_students() -> None:
|
||||||
echo("\n".join(teapot.get_public_key_of_all_canvas_students()))
|
echo("\n".join(teapot.get_public_key_of_all_canvas_students()))
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ def check_exist_issue_by_title(repo_names: List[str], title: str) -> None:
|
||||||
|
|
||||||
|
|
||||||
@app.command(
|
@app.command(
|
||||||
"get-releases",
|
"checkout-releases",
|
||||||
help="checkout git repo to git tag fetched from gitea by release name, with due date",
|
help="checkout git repo to git tag fetched from gitea by release name, with due date",
|
||||||
)
|
)
|
||||||
def checkout_to_repos_by_release_name(
|
def checkout_to_repos_by_release_name(
|
||||||
|
@ -74,6 +74,16 @@ def archieve_all_repos() -> None:
|
||||||
teapot.archieve_all_repos()
|
teapot.archieve_all_repos()
|
||||||
|
|
||||||
|
|
||||||
|
@app.command("get-no-collaborator-repos", help="list all repos with no collaborators")
|
||||||
|
def get_no_collaborator_repos() -> None:
|
||||||
|
teapot.get_no_collaborator_repos()
|
||||||
|
|
||||||
|
|
||||||
|
@app.command("get-no-commit-repos", help="list all repos with no commit")
|
||||||
|
def get_no_commit_repos() -> None:
|
||||||
|
teapot.get_no_commit_repos()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
app()
|
app()
|
||||||
|
|
|
@ -122,6 +122,12 @@ class Teapot:
|
||||||
def archieve_all_repos(self) -> None:
|
def archieve_all_repos(self) -> None:
|
||||||
self.gitea.archieve_all_repos()
|
self.gitea.archieve_all_repos()
|
||||||
|
|
||||||
|
def get_no_collaborator_repos(self) -> None:
|
||||||
|
self.gitea.get_no_collaborator_repos()
|
||||||
|
|
||||||
|
def get_no_commit_repos(self) -> None:
|
||||||
|
self.gitea.get_no_commit_repos()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
teapot = Teapot()
|
teapot = Teapot()
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Canvas:
|
||||||
self.course = self.canvas.get_course(course_id)
|
self.course = self.canvas.get_course(course_id)
|
||||||
logger.info(f"Canvas course loaded. {self.course}")
|
logger.info(f"Canvas course loaded. {self.course}")
|
||||||
self.students = self.course.get_users(
|
self.students = self.course.get_users(
|
||||||
enrollment_type=["student"], include=["email"]
|
enrollment_type=["student", "observer"], include=["email"]
|
||||||
)
|
)
|
||||||
for attr in ["sis_login_id", "sortable_name", "name"]:
|
for attr in ["sis_login_id", "sortable_name", "name"]:
|
||||||
if not hasattr(self.students[0], attr):
|
if not hasattr(self.students[0], attr):
|
||||||
|
|
|
@ -124,11 +124,13 @@ class Gitea:
|
||||||
repo = self.organization_api.create_org_repo(
|
repo = self.organization_api.create_org_repo(
|
||||||
self.org_name, body=body
|
self.org_name, body=body
|
||||||
)
|
)
|
||||||
logger.info(f"Personal repo {repo_name} for {student} created")
|
logger.info(
|
||||||
|
f"Personal repo {self.org_name}/{repo_name} for {student} created"
|
||||||
|
)
|
||||||
except ApiException as e:
|
except ApiException as e:
|
||||||
if e.status == 409:
|
if e.status == 409:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"Personal repo {repo_name} for {student} already exists"
|
f"Personal repo {self.org_name}/{repo_name} for {student} already exists"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise (e)
|
raise (e)
|
||||||
|
@ -230,6 +232,33 @@ class Gitea:
|
||||||
for data in list_all(self.organization_api.org_list_repos, self.org_name)
|
for data in list_all(self.organization_api.org_list_repos, self.org_name)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def get_no_collaborator_repos(self) -> List[str]:
|
||||||
|
res = []
|
||||||
|
for data in list_all(self.organization_api.org_list_repos, self.org_name):
|
||||||
|
collaborators = self.repository_api.repo_list_collaborators(
|
||||||
|
self.org_name, data.name
|
||||||
|
)
|
||||||
|
if collaborators:
|
||||||
|
continue
|
||||||
|
logger.info(f"{self.org_name}/{data.name} has no collaborators")
|
||||||
|
res.append(data.name)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def get_no_commit_repos(self) -> List[str]:
|
||||||
|
res = []
|
||||||
|
for data in list_all(self.organization_api.org_list_repos, self.org_name):
|
||||||
|
try:
|
||||||
|
commits = self.repository_api.repo_get_all_commits(
|
||||||
|
self.org_name, data.name
|
||||||
|
)
|
||||||
|
except ApiException as e:
|
||||||
|
if e.status == 409:
|
||||||
|
logger.info(f"{self.org_name}/{data.name} has no commits")
|
||||||
|
res.append(data.name)
|
||||||
|
else:
|
||||||
|
raise (e)
|
||||||
|
return res
|
||||||
|
|
||||||
def create_issue(
|
def create_issue(
|
||||||
self,
|
self,
|
||||||
repo_name: str,
|
repo_name: str,
|
||||||
|
@ -280,5 +309,4 @@ class Gitea:
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
gitea = Gitea()
|
gitea = Gitea()
|
||||||
res = gitea.get_all_repo_names()
|
res = gitea.get_no_commit_repos()
|
||||||
print("\n".join(res))
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user