diff options
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/planr/main.go | 1 | ||||
| -rw-r--r-- | cmd/planr/sub/evaluate.go | 52 | 
2 files changed, 45 insertions, 8 deletions
| diff --git a/cmd/planr/main.go b/cmd/planr/main.go index d250bbd..b073115 100644 --- a/cmd/planr/main.go +++ b/cmd/planr/main.go @@ -19,6 +19,7 @@ func printUsage(w io.Writer) {  	fmt.Fprintln(w, "  version                                                 ")  	fmt.Fprintln(w, "  build                                                   ")  	fmt.Fprintln(w, "  evaluate                                                ") +	fmt.Fprintln(w, "  evaluate -json                                          ")  	fmt.Fprintln(w, "  clean                                                   ")  	fmt.Fprintln(w, "  config                                                  ")  } diff --git a/cmd/planr/sub/evaluate.go b/cmd/planr/sub/evaluate.go index 81c9989..95f88d0 100644 --- a/cmd/planr/sub/evaluate.go +++ b/cmd/planr/sub/evaluate.go @@ -1,21 +1,57 @@  package sub  import ( -  "golang.flu0r1ne.net/planr" +	"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) - -  score := planr.Score(trs) - -  for _, tr := range trs { -    tcPprint(tr) +   +  results := gradingResults { +    TestResults: trs, +    Score:       planr.Score(trs), +  } +   +  if *jsonOutput { +    jsonPrint(results) +  } else { +    prettyPrint(results)    } - -  printScoring(score)  } | 
