fix: attr & dir
This commit is contained in:
parent
079d1c85ac
commit
dc1d068e5d
|
@ -14,19 +14,19 @@ class Git:
|
||||||
raise Exception(f"{repos_dir} does not exist! Create it first.")
|
raise Exception(f"{repos_dir} does not exist! Create it first.")
|
||||||
self.repos_dir = repos_dir
|
self.repos_dir = repos_dir
|
||||||
|
|
||||||
def clone_repo(self, repo_name: str) -> Repo:
|
def clone_repo(self, repo_name: str, branch: str = "master") -> Repo:
|
||||||
repo_dir = os.path.join(self.repos_dir, repo_name)
|
repo_dir = os.path.join(self.repos_dir, repo_name)
|
||||||
return Repo.clone_from(
|
return Repo.clone_from(
|
||||||
f"https://focs.ji.sjtu.edu.cn/git/{self.org_name}/{repo_name}",
|
f"ssh://git@focs.ji.sjtu.edu.cn:2222/{self.org_name}/{repo_name}.git",
|
||||||
repo_dir,
|
repo_dir,
|
||||||
branch="master",
|
branch=branch,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_repo(self, repo_name: str) -> Repo:
|
def get_repo(self, repo_name: str) -> Repo:
|
||||||
repo_dir = os.path.join(self.repos_dir, repo_name)
|
repo_dir = os.path.join(self.repos_dir, repo_name)
|
||||||
if os.path.exists(repo_dir):
|
if os.path.exists(repo_dir):
|
||||||
return Repo(repo_dir)
|
return Repo(repo_dir)
|
||||||
return self.clone_repo(repo_dir)
|
return self.clone_repo(repo_name)
|
||||||
|
|
||||||
def repo_clean_and_checkout(self, repo_name: str, checkout_dest: str) -> str:
|
def repo_clean_and_checkout(self, repo_name: str, checkout_dest: str) -> str:
|
||||||
repo_dir = os.path.join(self.repos_dir, repo_name)
|
repo_dir = os.path.join(self.repos_dir, repo_name)
|
||||||
|
|
|
@ -46,6 +46,8 @@ class Gitea:
|
||||||
@lru_cache
|
@lru_cache
|
||||||
def __get_team_id_by_name(self, name: str) -> int:
|
def __get_team_id_by_name(self, name: str) -> int:
|
||||||
res = self.organization_api.team_search(self.org_name, q=str(name), limit=1)
|
res = self.organization_api.team_search(self.org_name, q=str(name), limit=1)
|
||||||
|
if len(res["data"]) == 0:
|
||||||
|
raise Exception("Team not found by name")
|
||||||
return res["data"][0]["id"]
|
return res["data"][0]["id"]
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache
|
||||||
|
@ -75,7 +77,7 @@ class Gitea:
|
||||||
if repo_name is None:
|
if repo_name is None:
|
||||||
continue
|
continue
|
||||||
repo_names.append(repo_name)
|
repo_names.append(repo_name)
|
||||||
repo: Dict[str, Any] = self.organization_api.create_org_repo(
|
repo = self.organization_api.create_org_repo(
|
||||||
self.org_name,
|
self.org_name,
|
||||||
body={
|
body={
|
||||||
"auto_init": False,
|
"auto_init": False,
|
||||||
|
@ -87,9 +89,7 @@ class Gitea:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.repository_api.repo_add_collaborator(
|
self.repository_api.repo_add_collaborator(
|
||||||
self.org_name,
|
self.org_name, repo.name, self.__get_username_by_canvas_student(student)
|
||||||
repo["name"],
|
|
||||||
self.__get_username_by_canvas_student(student),
|
|
||||||
)
|
)
|
||||||
return repo_names
|
return repo_names
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ class Gitea:
|
||||||
if team_name is None or repo_name is None:
|
if team_name is None or repo_name is None:
|
||||||
continue
|
continue
|
||||||
repo_names.append(repo_name)
|
repo_names.append(repo_name)
|
||||||
team: Dict[str, Any] = self.organization_api.org_create_team(
|
team = self.organization_api.org_create_team(
|
||||||
self.org_name,
|
self.org_name,
|
||||||
body={
|
body={
|
||||||
"can_create_org_repo": False,
|
"can_create_org_repo": False,
|
||||||
|
@ -128,7 +128,7 @@ class Gitea:
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
repo: Dict[str, Any] = self.organization_api.create_org_repo(
|
repo = self.organization_api.create_org_repo(
|
||||||
self.org_name,
|
self.org_name,
|
||||||
body={
|
body={
|
||||||
"auto_init": False,
|
"auto_init": False,
|
||||||
|
@ -140,7 +140,7 @@ class Gitea:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.organization_api.org_add_team_repository(
|
self.organization_api.org_add_team_repository(
|
||||||
team["id"], self.org_name, repo_name
|
team.id, self.org_name, repo_name
|
||||||
)
|
)
|
||||||
membership: GroupMembership
|
membership: GroupMembership
|
||||||
for membership in group.get_memberships():
|
for membership in group.get_memberships():
|
||||||
|
@ -150,7 +150,7 @@ class Gitea:
|
||||||
f"student with user_id {membership.user_id} not found"
|
f"student with user_id {membership.user_id} not found"
|
||||||
)
|
)
|
||||||
username = self.__get_username_by_canvas_student(student)
|
username = self.__get_username_by_canvas_student(student)
|
||||||
self.organization_api.org_add_team_member(team["id"])
|
self.organization_api.org_add_team_member(team.id)
|
||||||
self.repository_api.repo_add_collaborator(
|
self.repository_api.repo_add_collaborator(
|
||||||
self.org_name, repo_name, username
|
self.org_name, repo_name, username
|
||||||
)
|
)
|
||||||
|
@ -172,7 +172,7 @@ class Gitea:
|
||||||
|
|
||||||
def get_all_repo_names(self) -> List[str]:
|
def get_all_repo_names(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
data["name"] for data in self.organization_api.org_list_repos(self.org_name)
|
data.name for data in self.organization_api.org_list_repos(self.org_name)
|
||||||
]
|
]
|
||||||
|
|
||||||
def create_issue(
|
def create_issue(
|
||||||
|
@ -185,7 +185,7 @@ class Gitea:
|
||||||
assignees = []
|
assignees = []
|
||||||
if assign_every_collaborators:
|
if assign_every_collaborators:
|
||||||
assignees = [
|
assignees = [
|
||||||
item["username"]
|
item.username
|
||||||
for item in self.repository_api.repo_list_collaborators(
|
for item in self.repository_api.repo_list_collaborators(
|
||||||
self.org_name, repo_name
|
self.org_name, repo_name
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user