package sub import ( "encoding/json" "fmt" "log" "flag" "golang.flu0r1ne.net/planr" ) type gradingResults struct { TestResults []planr.TestResult Score planr.Scoring } func prettyPrint(results gradingResults) { for _, tr := range results.TestResults { tcPprint(tr) } printScoring(results.Score) } func jsonPrint(results gradingResults) { res, err := json.Marshal(results) if err != nil { log.Fatalf("Error printing JSON: %v\n", err) } fmt.Println(string(res)) } func Evaluate(runner planr.Runner, params []string, cfg planr.Config) { f := flag.NewFlagSet("evaluate", flag.ExitOnError) jsonOutput := f.Bool("json", false, "print json output") f.Parse(params) dieIncompatibleVersion(cfg) tcs := runner.CollectCases() trs := runner.Evaluate(tcs) results := gradingResults { TestResults: trs, Score: planr.Score(trs), } if *jsonOutput { jsonPrint(results) } else { prettyPrint(results) } }