Joint-Teapot/examples/ve482.py

55 lines
2.0 KiB
Python

import glob
import ntpath
from joint_teapot import Teapot, logger
class MyTeapot(Teapot):
def ve482p1(self) -> None:
fault_repos = []
for repo_name in self.gitea.get_all_repo_names():
if not repo_name.endswith("p1"):
continue
faults = []
succeed = self.checkout_to_repo_by_release_name(repo_name, "p1")
if succeed:
contain_c_file = False
contain_readme_file = False
for fn in glob.glob(f"{self.git.repos_dir}/{repo_name}/*"):
basename = ntpath.basename(fn)
if basename.endswith(".c"):
contain_c_file = True
if basename.lower().startswith("readme"):
contain_readme_file = True
if not contain_c_file:
faults.append(
"no C file found in root directory in release p1, "
"can not compile on JOJ"
)
if not contain_readme_file:
faults.append(
"no README file found in root directory in release p1"
)
else:
faults.append("no release named p1")
if faults:
fault_string = ""
for fault in faults:
fault_string += f"- {fault}\n"
logger.info("\n".join(("", repo_name, "", fault_string)))
self.gitea.issue_api.issue_create_issue(
self.gitea.org_name,
repo_name,
body={
"body": fault_string,
"title": "p1 submission pre-check failed",
},
)
fault_repos.append(repo_name)
logger.info(f"{len(fault_repos)} fault repo(s): {fault_repos}")
if __name__ == "__main__":
teapot = MyTeapot()
teapot.ve482p1()