From 4f6854fa9cbbafe78ea3fe0373f63db93297a39b Mon Sep 17 00:00:00 2001 From: Flu0r1ne Date: Wed, 11 Aug 2021 23:00:24 -0500 Subject: Prepare for dh-golang --- cmd/planr/main.go | 50 +++++++++++++++++++++++++++++++++++++++++++++ cmd/planr/sub/build.go | 19 +++++++++++++++++ cmd/planr/sub/evaluate.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 cmd/planr/main.go create mode 100644 cmd/planr/sub/build.go create mode 100644 cmd/planr/sub/evaluate.go (limited to 'cmd/planr') diff --git a/cmd/planr/main.go b/cmd/planr/main.go new file mode 100644 index 0000000..c65edb1 --- /dev/null +++ b/cmd/planr/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "os" + "io" + "fmt" + "golang.flu0r1ne.net/planr/cmd/planr/sub" +) + +const ( + VERSION = "0.0.1" +) + +func printUsage(w io.Writer) { + fmt.Fprintf (w, "usage: %s command args ... \n", os.Args[0]) + fmt.Fprintln(w, " help ") + fmt.Fprintln(w, " version ") + fmt.Fprintln(w, " build ") + fmt.Fprintln(w, " evaluate ") +} + +func dieUsage() { + printUsage(os.Stderr) + os.Exit(1) +} + +func main() { + + if len(os.Args) < 2 { + dieUsage() + } + + subcommand := os.Args[1] + subargs := os.Args[2:] + + switch subcommand { + case "version": + fmt.Printf("%s\n", VERSION) + case "build": + sub.Build(subargs) + case "evaluate": + sub.Evaluate(subargs) + case "help", "-h", "-help", "--help": + printUsage(os.Stdout) + default: + fmt.Fprintf(os.Stderr, "unrecognized command %s\n", subcommand) + dieUsage() + } + +} diff --git a/cmd/planr/sub/build.go b/cmd/planr/sub/build.go new file mode 100644 index 0000000..58c3a38 --- /dev/null +++ b/cmd/planr/sub/build.go @@ -0,0 +1,19 @@ +package sub + +import ( + "golang.flu0r1ne.net/planr" + "golang.flu0r1ne.net/planr/adapters/gtest" +) + +func Runner() planr.Runner { + r := planr.Runner {} + r.RegisterAdapter(>est.GtestAdapter{}) + return r +} + +func Build(params []string) { + + rd := planr.RubricDir() + + Runner().Build(rd) +} diff --git a/cmd/planr/sub/evaluate.go b/cmd/planr/sub/evaluate.go new file mode 100644 index 0000000..1174b3f --- /dev/null +++ b/cmd/planr/sub/evaluate.go @@ -0,0 +1,52 @@ +package sub + +import ( + "fmt" + "golang.flu0r1ne.net/planr" +) + +func Evaluate(params []string) { + rd := planr.RubricDir() + + tcs := Runner().Evaluate(rd) + + fmt.Printf("\n\nREPORT:\n=======\n\n") + + earned := 0.0 + total := 0.0 + for _, tc := range tcs { + cfg := tc.Config + + name := tc.Cname + if cfg.Title != nil { + name = *cfg.Title + } + + var points float64 = 0.0 + if cfg.Points != nil { + points = float64(*cfg.Points) + } + + status := "SILENT" + if tc.Result != nil { + if tc.Result.Pass { + status = "PASS" + earned += points + } else { + status = "FAIL" + } + } + + total += points + + fmt.Printf("[%s] %s (%f)\n", status, name, points) + + if cfg.Description != nil { + fmt.Printf("> %s\n", *cfg.Description) + } + + fmt.Println() + } + + fmt.Printf("Score: %f (%f%%)\n", earned, (earned / total) * 100) +} -- cgit v1.2.3