From 9f53c74766d785822d64ccfad3a35a2eb0eb0dde Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 31 Dec 2023 19:44:55 -0600 Subject: [PATCH] add SPEW as a logFlag type Signed-off-by: Jeff Carr --- flags.go | 26 +++++++++++++++++++++----- spew.go | 23 ++++++++++++++++++++--- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/flags.go b/flags.go index 672e28a..de58c8d 100644 --- a/flags.go +++ b/flags.go @@ -9,12 +9,29 @@ var WARN bool = true var ERROR bool = true var VERBOSE bool = false -var SPEW bool = false +// var SPEW bool = false + +var SPEW logFlag + +type logFlag struct { + b bool + name string + pkg string + desc string +} var registered map[string][]string func init() { registered = make(map[string][]string) + + SPEW.b = false + SPEW.name = "SPEW" + SPEW.pkg = "log" + SPEW.desc = "Enable log.Spew()" + + // register the default flags used by this log package + registered["log"] = []string{"SPEW","INFO", "WARN", "ERROR", "VERBOSE"} } func All(b bool) { @@ -25,8 +42,7 @@ func All(b bool) { Set("VERBOSE", b) } -func ListAll() map[string][]string { - registered["all"] = []string{"SPEW","INFO", "WARN", "ERROR", "VERBOSE"} +func ListFlags() map[string][]string { return registered } @@ -37,7 +53,7 @@ func Set(flag string, b bool) { case "WARN": WARN = b case "SPEW": - SPEW = b + SPEW.b = b case "ERROR": ERROR = b case "VERBOSE": @@ -54,7 +70,7 @@ func Get(flag string) bool { case "WARN": return WARN case "SPEW": - return SPEW + return SPEW.b case "ERROR": return ERROR case "VERBOSE": diff --git a/spew.go b/spew.go index fa0e8b1..a467906 100644 --- a/spew.go +++ b/spew.go @@ -5,10 +5,27 @@ import ( "github.com/davecgh/go-spew/spew" ) -func Spew(a ...any) { - if ! SPEW { return } - origlog.Println("SPEW:", spew.Sdump(a...)) +func Spew(b any, a ...any) { + if ! SPEW.b { return } + switch b.(type) { + case bool: + if ! b.(bool) { + return + } + origlog.Println("SPEW:", spew.Sdump(a...)) + case logFlag: + var f logFlag + f = b.(logFlag) + if ! f.b { + return + } + origlog.Println("SPEW:", spew.Sdump(a...)) + default: + origlog.Println("SPEW b:", spew.Sdump(b)) + origlog.Println("SPEW a:", spew.Sdump(a...)) + } + // origlog.Println("SPEW:", spew.Sdump(a...)) /* scs := spew.ConfigState{Indent: "\t", MaxDepth: 1} // Output using the ConfigState instance.