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