diff --git a/internal/parsers/keyword/parser.go b/internal/parsers/keyword/parser.go index ccf0c0f..f7890fe 100644 --- a/internal/parsers/keyword/parser.go +++ b/internal/parsers/keyword/parser.go @@ -55,13 +55,13 @@ func (*Keyword) Run(results []stage.ExecutorResult, confAny any) ( return nil, true, err } var res []stage.ParserResult - end := false + forceQuit := false for _, result := range results { tmp, matched := Parse(result, *conf) if matched && conf.EndOnMatch { - end = true + forceQuit = true } res = append(res, tmp) } - return res, end, nil + return res, forceQuit, nil } diff --git a/internal/parsers/resultstatus/parser.go b/internal/parsers/resultstatus/parser.go index b023a76..3b1aad3 100644 --- a/internal/parsers/resultstatus/parser.go +++ b/internal/parsers/resultstatus/parser.go @@ -19,12 +19,12 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) ( if err != nil { return nil, true, err } - end := false + forceQuit := false var res []stage.ParserResult for _, result := range results { comment := "" if result.Status != stage.Status(envexec.StatusAccepted) { - end = true + forceQuit = true comment = fmt.Sprintf( "Unexpected executor status: %s.", result.Status, ) @@ -34,5 +34,5 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) ( Comment: comment, }) } - return res, end, nil + return res, forceQuit, nil } diff --git a/internal/stage/model.go b/internal/stage/model.go index 1b052d8..cb33462 100644 --- a/internal/stage/model.go +++ b/internal/stage/model.go @@ -164,6 +164,7 @@ type ParserResult struct { } type StageResult struct { - Name string `json:"name"` - Results []ParserResult `json:"results"` + Name string `json:"name"` + Results []ParserResult `json:"results"` + ForceQuit bool `json:"force_quit"` } diff --git a/internal/stage/run.go b/internal/stage/run.go index 6c74758..670f666 100644 --- a/internal/stage/run.go +++ b/internal/stage/run.go @@ -26,17 +26,18 @@ func Run(stages []Stage) []StageResult { slog.Error("parser not found", "name", stage.ParserName) break } - parserResults, end, err := parser.Run(executorResults, stage.ParserConf) + parserResults, forceQuit, err := parser.Run(executorResults, stage.ParserConf) if err != nil { slog.Error("parser run error", "name", stage.ExecutorName, "error", err) break } slog.Debug("parser run done", "results", parserResults) stageResults = append(stageResults, StageResult{ - Name: stage.Name, - Results: parserResults, + Name: stage.Name, + Results: parserResults, + ForceQuit: forceQuit, }) - if end { + if forceQuit { break } }