feat: load score file from env var

This commit is contained in:
张泊明518370910136 2025-02-01 20:06:31 -05:00
parent c8d6c10409
commit 1430b11e45
GPG Key ID: CA088E6D9284F870

View File

@ -649,9 +649,6 @@ def joj3_all(
)
def joj3_all_env(
env_path: str = Argument("", help="path to .env file"),
score_file_path: str = Argument(
"", help="path to score json file generated by JOJ3"
),
grading_repo_name: str = Argument(
"",
help="name of grading repo to push failed table file",
@ -704,6 +701,7 @@ def joj3_all_env(
groups = os.getenv("JOJ3_GROUPS", "")
commit_msg = os.getenv("JOJ3_COMMIT_MSG", "")
force_quit_stage_name = os.getenv("JOJ3_FORCE_QUIT_STAGE_NAME") or ""
score_file_path = os.getenv("JOJ3_OUTPUT_PATH", "")
submitter_repo_name = (repository or "").split("/")[-1]
total_score = joj3.get_total_score(score_file_path)
res = {
@ -772,7 +770,7 @@ def joj3_all_env(
if skip_scoreboard and skip_failed_table:
return
lock_file_path = os.path.join(
settings.repos_dir, submitter_repo_name, settings.joj3_lock_file_path
settings.repos_dir, grading_repo_name, settings.joj3_lock_file_path
)
logger.info(
f"try to acquire lock, file path: {lock_file_path}, "
@ -784,12 +782,12 @@ def joj3_all_env(
git_push_ok = False
while not git_push_ok:
repo_path = tea.pot.git.repo_clean_and_checkout(
submitter_repo_name,
grading_repo_name,
"grading",
clean_git_lock=True,
reset_target="origin/grading",
)
repo: Repo = tea.pot.git.get_repo(submitter_repo_name)
repo: Repo = tea.pot.git.get_repo(grading_repo_name)
if "grading" not in repo.remote().refs:
logger.error(
'"grading" branch not found in remote, create and push it to origin first.'
@ -807,7 +805,7 @@ def joj3_all_env(
exercise_name,
)
tea.pot.git.add_commit(
submitter_repo_name,
grading_repo_name,
[scoreboard_file_name],
(
f"joj3: update scoreboard for {exercise_name} by @{submitter} in "
@ -826,7 +824,7 @@ def joj3_all_env(
gitea_actions_url,
)
tea.pot.git.add_commit(
submitter_repo_name,
grading_repo_name,
[failed_table_file_name],
(
f"joj3: update failed table for {exercise_name} by @{submitter} in "
@ -836,7 +834,7 @@ def joj3_all_env(
f"groups: {groups}\n"
),
)
push_info_list = tea.pot.git.push(submitter_repo_name)
push_info_list = tea.pot.git.push(grading_repo_name)
git_push_ok = push_info_list.error is None
if not git_push_ok:
retry_interval *= 2