From 68eea60f165009568bc75e4595e37c7fbd2ff8c3 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 20 Feb 2025 09:38:47 -0600 Subject: [PATCH] autogen pb gui table fixes --- example/fruit.proto | 1 + file.proto | 1 + generateGui.go | 32 +++++++++++++++++++++++++++++--- main.go | 6 ++++-- protoParse.go | 6 ++++++ 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/example/fruit.proto b/example/fruit.proto index 86a8f89..4545e03 100644 --- a/example/fruit.proto +++ b/example/fruit.proto @@ -65,6 +65,7 @@ message Fruit { Pears notpears = 6; Pears fakepears = 7; repeated Basket gifts = 8; + int64 price = 9; // `autogenpb:sort` } // "Fruits" MUST EXIST and start exactly this way diff --git a/file.proto b/file.proto index 14bf910..01c9d39 100644 --- a/file.proto +++ b/file.proto @@ -80,6 +80,7 @@ message File { map iterMap = 11; repeated Sort toSort = 12; // variables that are repeated can have the standard functions generated (Sort(), etc) string goPath = 13; // the version to use in a func NewMsgName() + bool doGui = 14; // if a gui.pb.go file should be created } // I know, I know, the whole point of using protobuf diff --git a/generateGui.go b/generateGui.go index 8aa6b2a..80dc61f 100644 --- a/generateGui.go +++ b/generateGui.go @@ -32,8 +32,13 @@ func (pb *Files) makeGuiFile(pf *File) error { } if v.VarType == "string" { log.Printf("make Add function here %s %s %s\n", pf.Bases.Name, pf.Base.Name, v.VarName) - guiAddFunc(newf, pf.Bases.Name, pf.Base.Name, v.VarName) - // log.Printf("make Add function here %s %s\n", v.VarType, v.VarName) + guiAddStringFunc(newf, pf.Bases.Name, pf.Base.Name, v.VarName) + continue + } + if v.VarType == "int64" { + log.Printf("make Add function here %s %s %s\n", pf.Bases.Name, pf.Base.Name, v.VarName) + guiAddIntFunc(newf, pf.Bases.Name, pf.Base.Name, v.VarName) + continue } /* continue @@ -221,7 +226,7 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) { fmt.Fprintln(w, "}") } -func guiAddFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { +func guiAddStringFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { fmt.Fprintln(w, "") fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() {") fmt.Fprintln(w, " // t.pb.Order = append(t.pb.Order, "+BRAND+")") @@ -241,3 +246,24 @@ func guiAddFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { fmt.Fprintln(w, "") */ } + +func guiAddIntFunc(w io.Writer, FRUITS string, FRUIT string, BRAND string) { + fmt.Fprintln(w, "") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) Add"+BRAND+"() {") + fmt.Fprintln(w, " // t.pb.Order = append(t.pb.Order, "+BRAND+")") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " t.AddIntFunc(\""+BRAND+"\", func(m *"+FRUIT+") int {") + fmt.Fprintln(w, " return int(m."+BRAND+")") + fmt.Fprintln(w, " })") + fmt.Fprintln(w, "}") + /* + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddMemory() {") + fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, \"Memory\")") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddCpus() {") + fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, \"Cpus\")") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + */ +} diff --git a/main.go b/main.go index dfe56c4..ac1ee1a 100644 --- a/main.go +++ b/main.go @@ -188,8 +188,10 @@ func main() { badExit(err) } - if err := pb.makeGuiFile(pf); err != nil { - badExit(err) + if pf.DoGui { + if err := pb.makeGuiFile(pf); err != nil { + badExit(err) + } } } diff --git a/protoParse.go b/protoParse.go index 8ba1c15..ba1ff4c 100644 --- a/protoParse.go +++ b/protoParse.go @@ -10,6 +10,7 @@ import ( "strings" "go.wit.com/lib/fhelp" + "go.wit.com/log" "golang.org/x/text/cases" "golang.org/x/text/language" ) @@ -188,5 +189,10 @@ func (pf *File) parseForMessage(line string) *MsgName { msg.DoMarshal = true // log.Info("Added Marshal=true:", msg.Name) } + if strings.Contains(line, "autogenpb:gui") { + log.Info("got autogenpb:gui") + pf.DoGui = true + // os.Exit(-1) + } return msg }