feat: output force quit (#29)

Reviewed-on: FOCS-dev/JOJ3#29
Co-authored-by: Boming Zhang <bomingzh@sjtu.edu.cn>
Co-committed-by: Boming Zhang <bomingzh@sjtu.edu.cn>
This commit is contained in:
张泊明518370910136 2024-06-07 13:57:29 +08:00
parent 05876c290d
commit a505b70506
GPG Key ID: D47306D7062CDA9D
4 changed files with 14 additions and 12 deletions

View File

@ -57,13 +57,13 @@ func (*Keyword) Run(results []stage.ExecutorResult, confAny any) (
return nil, true, err return nil, true, err
} }
var res []stage.ParserResult var res []stage.ParserResult
end := false forceQuit := false
for _, result := range results { for _, result := range results {
tmp, matched := Parse(result, *conf) tmp, matched := Parse(result, *conf)
if matched && conf.EndOnMatch { if matched && conf.EndOnMatch {
end = true forceQuit = true
} }
res = append(res, tmp) res = append(res, tmp)
} }
return res, end, nil return res, forceQuit, nil
} }

View File

@ -19,12 +19,12 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) (
if err != nil { if err != nil {
return nil, true, err return nil, true, err
} }
end := false forceQuit := false
var res []stage.ParserResult var res []stage.ParserResult
for _, result := range results { for _, result := range results {
comment := "" comment := ""
if result.Status != stage.Status(envexec.StatusAccepted) { if result.Status != stage.Status(envexec.StatusAccepted) {
end = true forceQuit = true
comment = fmt.Sprintf( comment = fmt.Sprintf(
"Unexpected executor status: %s.", result.Status, "Unexpected executor status: %s.", result.Status,
) )
@ -34,5 +34,5 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) (
Comment: comment, Comment: comment,
}) })
} }
return res, end, nil return res, forceQuit, nil
} }

View File

@ -166,4 +166,5 @@ type ParserResult struct {
type StageResult struct { type StageResult struct {
Name string `json:"name"` Name string `json:"name"`
Results []ParserResult `json:"results"` Results []ParserResult `json:"results"`
ForceQuit bool `json:"force_quit"`
} }

View File

@ -26,7 +26,7 @@ func Run(stages []Stage) []StageResult {
slog.Error("parser not found", "name", stage.ParserName) slog.Error("parser not found", "name", stage.ParserName)
break break
} }
parserResults, end, err := parser.Run(executorResults, stage.ParserConf) parserResults, forceQuit, err := parser.Run(executorResults, stage.ParserConf)
if err != nil { if err != nil {
slog.Error("parser run error", "name", stage.ExecutorName, "error", err) slog.Error("parser run error", "name", stage.ExecutorName, "error", err)
break break
@ -35,8 +35,9 @@ func Run(stages []Stage) []StageResult {
stageResults = append(stageResults, StageResult{ stageResults = append(stageResults, StageResult{
Name: stage.Name, Name: stage.Name,
Results: parserResults, Results: parserResults,
ForceQuit: forceQuit,
}) })
if end { if forceQuit {
break break
} }
} }