aboutsummaryrefslogtreecommitdiff
path: root/cmd/planr/sub/cli.go
diff options
context:
space:
mode:
authorFlu0r1ne <flur01ne@flu0r1ne.net>2021-08-13 16:31:04 -0500
committerFlu0r1ne <flur01ne@flu0r1ne.net>2021-08-13 16:31:04 -0500
commit3337257fe24b67871406217e98862d34647dd725 (patch)
tree6bee1bf6bf16d75df0481a254e7abe3bf39d5ab5 /cmd/planr/sub/cli.go
parent4f6854fa9cbbafe78ea3fe0373f63db93297a39b (diff)
downloadplanr-3337257fe24b67871406217e98862d34647dd725.tar.xz
planr-3337257fe24b67871406217e98862d34647dd725.zip
Add colorized output and build traces
Diffstat (limited to 'cmd/planr/sub/cli.go')
-rw-r--r--cmd/planr/sub/cli.go89
1 files changed, 89 insertions, 0 deletions
diff --git a/cmd/planr/sub/cli.go b/cmd/planr/sub/cli.go
new file mode 100644
index 0000000..42d1c81
--- /dev/null
+++ b/cmd/planr/sub/cli.go
@@ -0,0 +1,89 @@
+package sub
+
+import (
+ "github.com/fatih/color"
+ "golang.flu0r1ne.net/planr"
+ "fmt"
+)
+
+var (
+ col_pass = color.New(color.FgGreen)
+ col_fail = color.New(color.FgRed)
+ col_title = color.New(color.FgHiWhite)
+ col_label = color.New(color.FgCyan)
+);
+
+func tcTitle(tc planr.TestCase) string {
+ title := tc.Cname
+
+ if tc.Config.Title != nil {
+ title = *tc.Config.Title
+ }
+
+ return title
+}
+
+func tcStatus(tc planr.TestCase) string {
+ status := "SILENT"
+
+ if tc.Result != nil {
+ if tc.Result.Status == planr.PASSING {
+ status = "PASS"
+ } else {
+ status = "FAIL"
+ }
+ }
+
+ return status
+}
+
+func pprintLabeled(label, value string) {
+ col_label.Printf(" %s: ", label)
+ fmt.Println(value)
+}
+
+func tcStatusLine(tc planr.TestCase) {
+ title := tcTitle(tc)
+ status := tcStatus(tc)
+
+ if status == "PASS" {
+ col_pass.Printf("[%s] ", status);
+ } else {
+ col_fail.Printf("[%s] ", status);
+ }
+
+ col_title.Println(title);
+}
+
+func tcPprint(tc planr.TestCase) {
+ tcStatusLine(tc)
+
+ if tc.Config.Points != nil {
+ points := fmt.Sprintf("%.1f", *tc.Config.Points)
+ pprintLabeled("points", points)
+ }
+
+ if tc.Config.Description != nil {
+ pprintLabeled("description", *tc.Config.Description)
+ }
+
+ if tc.Result.DebugOutput != "" {
+ pprintLabeled("debug output", tc.Result.DebugOutput)
+ }
+
+ if tc.Result.FailureMsg != "" {
+ pprintLabeled("failure", tc.Result.FailureMsg);
+ }
+
+ fmt.Println()
+}
+
+func printResults(passed, tc_total int, earned, points_total float64) {
+ col_title.Println("Final Results:")
+
+ pprintLabeled("passed", fmt.Sprintf("%d/%d", passed, tc_total));
+
+ pprintLabeled("score", fmt.Sprintf(
+ "%.2f/%.2f ~= %.1f%%", earned, points_total, earned / points_total * 100,
+ ));
+}