summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--example/fruit.proto1
-rw-r--r--file.proto1
-rw-r--r--generateGui.go32
-rw-r--r--main.go6
-rw-r--r--protoParse.go6
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<string, string> 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
}