feat(cmd/joj3): return non-zero on force quit
This commit is contained in:
parent
f6960b21f2
commit
17fb9d4ca7
|
@ -69,7 +69,8 @@ func mainImpl() error {
|
|||
slog.Error("conf check expire", "error", err)
|
||||
return err
|
||||
}
|
||||
if err := stage.Run(confObj, group); err != nil {
|
||||
stageForceQuit, err := stage.Run(confObj, group)
|
||||
if err != nil {
|
||||
slog.Error("stage run", "error", err)
|
||||
return err
|
||||
}
|
||||
|
@ -77,6 +78,10 @@ func mainImpl() error {
|
|||
slog.Error("teapot run", "error", err)
|
||||
return err
|
||||
}
|
||||
if stageForceQuit {
|
||||
slog.Info("stage force quit")
|
||||
return fmt.Errorf("stage force quit")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ func TestRun(t *testing.T) {
|
|||
os.Args = []string{"./joj3"}
|
||||
outputFile := "joj3_result.json"
|
||||
defer os.Remove(outputFile)
|
||||
main()
|
||||
_ = mainImpl()
|
||||
stageResults := readStageResults(t, outputFile)
|
||||
regex := true
|
||||
expectedFile := "expected_regex.json"
|
||||
|
|
|
@ -81,7 +81,7 @@ func outputResult(outputPath string, results []stage.StageResult) error {
|
|||
append(content, []byte("\n")...), 0o600)
|
||||
}
|
||||
|
||||
func Run(conf *conf.Conf, group string) error {
|
||||
func Run(conf *conf.Conf, group string) (forceQuit bool, err error) {
|
||||
executors.InitWithConf(
|
||||
conf.Stage.SandboxExecServer,
|
||||
conf.Stage.SandboxToken,
|
||||
|
@ -89,17 +89,17 @@ func Run(conf *conf.Conf, group string) error {
|
|||
stages, err := generateStages(conf, group)
|
||||
if err != nil {
|
||||
slog.Error("generate stages", "error", err)
|
||||
return err
|
||||
return
|
||||
}
|
||||
defer stage.Cleanup()
|
||||
results, err := stage.Run(stages)
|
||||
results, forceQuit, err := stage.Run(stages)
|
||||
if err != nil {
|
||||
slog.Error("run stages", "error", err)
|
||||
return err
|
||||
return
|
||||
}
|
||||
if err := outputResult(conf.Stage.OutputPath, results); err != nil {
|
||||
if err = outputResult(conf.Stage.OutputPath, results); err != nil {
|
||||
slog.Error("output result", "error", err)
|
||||
return err
|
||||
return
|
||||
}
|
||||
return nil
|
||||
return
|
||||
}
|
||||
|
|
|
@ -5,11 +5,10 @@ import (
|
|||
"log/slog"
|
||||
)
|
||||
|
||||
func Run(stages []Stage) (stageResults []StageResult, err error) {
|
||||
func Run(stages []Stage) (stageResults []StageResult, forceQuit bool, err error) {
|
||||
var executorResults []ExecutorResult
|
||||
var parserResults []ParserResult
|
||||
var tmpParserResults []ParserResult
|
||||
var forceQuit bool
|
||||
slog.Info("stage run start")
|
||||
for _, stage := range stages {
|
||||
slog.Info("stage start", "name", stage.Name)
|
||||
|
@ -32,7 +31,7 @@ func Run(stages []Stage) (stageResults []StageResult, err error) {
|
|||
slog.Debug("executor run done", "result.Files", executorResult.Files)
|
||||
}
|
||||
parserResults = []ParserResult{}
|
||||
stageForceQuit := false
|
||||
forceQuit = false
|
||||
for _, stageParser := range stage.Parsers {
|
||||
slog.Info("parser run start", "name", stageParser.Name)
|
||||
slog.Debug("parser run start", "name", stageParser.Name,
|
||||
|
@ -43,13 +42,17 @@ func Run(stages []Stage) (stageResults []StageResult, err error) {
|
|||
err = fmt.Errorf("parser not found: %s", stageParser.Name)
|
||||
return
|
||||
}
|
||||
tmpParserResults, forceQuit, err = parser.Run(
|
||||
var parserForceQuit bool
|
||||
tmpParserResults, parserForceQuit, err = parser.Run(
|
||||
executorResults, stageParser.Conf)
|
||||
if err != nil {
|
||||
slog.Error("parser run error", "name", stageParser.Name, "error", err)
|
||||
return
|
||||
}
|
||||
stageForceQuit = stageForceQuit || forceQuit
|
||||
if parserForceQuit {
|
||||
slog.Error("parser force quit", "name", stageParser.Name)
|
||||
}
|
||||
forceQuit = forceQuit || parserForceQuit
|
||||
slog.Debug("parser run done", "results", tmpParserResults)
|
||||
if len(parserResults) == 0 {
|
||||
parserResults = tmpParserResults
|
||||
|
@ -59,16 +62,13 @@ func Run(stages []Stage) (stageResults []StageResult, err error) {
|
|||
parserResults[i].Comment += tmpParserResults[i].Comment
|
||||
}
|
||||
}
|
||||
if forceQuit {
|
||||
slog.Error("parser force quit", "name", stageParser.Name)
|
||||
}
|
||||
}
|
||||
stageResults = append(stageResults, StageResult{
|
||||
Name: stage.Name,
|
||||
Results: parserResults,
|
||||
ForceQuit: stageForceQuit,
|
||||
ForceQuit: forceQuit,
|
||||
})
|
||||
if stageForceQuit {
|
||||
if forceQuit {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user