diff --git a/joj3_config_generator/convert.py b/joj3_config_generator/convert.py index 4db2a23..f19a42d 100644 --- a/joj3_config_generator/convert.py +++ b/joj3_config_generator/convert.py @@ -1,5 +1,5 @@ from joj3_config_generator.lib.repo import getHealthcheckConfig, getTeapotConfig -from joj3_config_generator.lib.task import fix_comment, fix_keyword +from joj3_config_generator.lib.task import fix_comment, fix_keyword, fix_result_detail from joj3_config_generator.models import ( Cmd, CmdFile, @@ -82,16 +82,10 @@ def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config: ParserConfig(name=parser, with_={}) for parser in task_stage.parsers ], ) - # TODO: fix all parser here - if "result-detail" in task_stage.parsers: - result_detail_parser = next( - p for p in conf_stage.parsers if p.name == "result-detail" - ) - if task_stage.result_detail is not None: - result_detail_parser.with_.update(task_stage.result_detail) - + conf_stage = fix_result_detail(task_stage, conf_stage) conf_stage = fix_comment(task_stage, conf_stage) conf_stage = fix_keyword(task_stage, conf_stage) + # TODO: fix diff parser here result_conf.stage.stages.append(conf_stage) diff --git a/joj3_config_generator/lib/task.py b/joj3_config_generator/lib/task.py index deb3c27..900749b 100644 --- a/joj3_config_generator/lib/task.py +++ b/joj3_config_generator/lib/task.py @@ -20,6 +20,37 @@ def fix_keyword(task_stage: TaskStage, conf_stage: ResultStage) -> ResultStage: return conf_stage +def fix_result_detail(task_stage: TaskStage, conf_stage: ResultStage) -> ResultStage: + if "result-detail" in task_stage.parsers: + result_detail_parser = next( + p for p in conf_stage.parsers if p.name == "result-detail" + ) + if task_stage.result_detail is not None: + show_files = [] + if ( + task_stage.result_detail.stdout + and task_stage.result_detail.stdout is not None + ): + show_files.append("stdout") + if ( + task_stage.result_detail.stderr + and task_stage.result_detail.stderr is not None + ): + show_files.append("stderr") + result_detail_parser.with_.update( + { + "score": 0, + "comment": "", + "showFiles": show_files, + "showExitStatus": task_stage.result_detail.exitstatus, + "showRuntime": task_stage.result_detail.time, + "showMemory": task_stage.result_detail.mem, + } + ) + + return conf_stage + + def fix_comment(task_stage: TaskStage, conf_stage: ResultStage) -> ResultStage: comment_parser = [ "dummy", diff --git a/joj3_config_generator/models/task.py b/joj3_config_generator/models/task.py index 2bb15cd..31fd3f2 100644 --- a/joj3_config_generator/models/task.py +++ b/joj3_config_generator/models/task.py @@ -46,7 +46,9 @@ class Stage(BaseModel): keyword: Optional[ParserKeyword] = ParserKeyword() clangtidy: Optional[ParserKeyword] = ParserKeyword() cppcheck: Optional[ParserKeyword] = ParserKeyword() - cpplint: Optional[ParserKeyword] = ParserKeyword() + # FIXME: determine cpplint type + # cpplint: Optional[ParserKeyword] = ParserKeyword() + cpplint: Optional[ParserDummy] = ParserDummy() result_detail: Optional[ParserResultDetail] = Field( ParserResultDetail(), alias="result-detail" )