diff --git a/joint_teapot/app.py b/joint_teapot/app.py index 5313795..7e0648c 100644 --- a/joint_teapot/app.py +++ b/joint_teapot/app.py @@ -468,6 +468,10 @@ def joj3_all( "unknown", help="JOJ3 run ID", ), + max_total_score: int = Argument( + -1, + help="max total score", + ), skip_result_issue: bool = Option( False, help="skip creating result issue on gitea", @@ -508,8 +512,11 @@ def joj3_all( commit_hash, submitter_in_issue_title, run_id, + max_total_score, + ) + title_prefix = joj3.get_title_prefix( + exercise_name, submitter, submitter_in_issue_title ) - title_prefix = joj3.get_title_prefix(title) joj3_issue: focs_gitea.Issue issue: focs_gitea.Issue for issue in tea.pot.gitea.issue_api.issue_list_issues( diff --git a/joint_teapot/utils/joj3.py b/joint_teapot/utils/joj3.py index d785047..d2d108f 100644 --- a/joint_teapot/utils/joj3.py +++ b/joint_teapot/utils/joj3.py @@ -188,6 +188,7 @@ def generate_title_and_comment( commit_hash: str, submitter_in_title: bool = True, run_id: str = "unknown", + max_total_score: int = -1, ) -> Tuple[str, str]: with open(score_file_path) as json_file: stages: List[Dict[str, Any]] = json.load(json_file) @@ -227,9 +228,12 @@ def generate_title_and_comment( comment += "\n\n" total_score += result["score"] comment += "\n" - title = f"JOJ3 Result for {exercise_name} by @{submitter} - Score: {total_score}" - if not submitter_in_title: - title = f"JOJ3 Result for {exercise_name} - Score: {total_score}" + title = get_title_prefix(exercise_name, submitter, submitter_in_title) + if max_total_score >= 0: + total_score = min(total_score, max_total_score) + title += f"{total_score} / {max_total_score}" + else: + title += f"{total_score}" return title, comment @@ -245,12 +249,10 @@ def check_skipped(score_file_path: str, keyword: str) -> bool: return False -def get_title_prefix(title: str) -> str: - meet_negative = False - for i in range(len(title) - 1, -1, -1): - if not title[i].isdigit() and not title[i].isspace(): - if not meet_negative and title[i] == "-": - meet_negative = True - continue - return title[: i + 1] - return "" +def get_title_prefix( + exercise_name: str, submitter: str, submitter_in_title: bool +) -> str: + title = f"JOJ3 Result for {exercise_name} by @{submitter} - " + if not submitter_in_title: + title = f"JOJ3 Result for {exercise_name} - " + return title