summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README6
-rw-r--r--argv.go3
-rw-r--r--file.proto1
-rw-r--r--main.go40
-rw-r--r--protoReformat.go18
-rw-r--r--structs.go16
6 files changed, 65 insertions, 19 deletions
diff --git a/README b/README
index b024767..20a9046 100644
--- a/README
+++ b/README
@@ -1,5 +1,7 @@
# This app auto-generates *.pb.go files
#
+# it'll also auto-increment with --renumber
+#
# It assumes you are doing GO development in ~/go/src
# Although it might work with go.work directory setups
# I haven't tested that much yet because I haven't had time
@@ -18,6 +20,10 @@
* FindBy() functions
* DeleteBy() functions
* AppendBy() functions
+* Http() functions
+* Gui() functions
+* PrintTable() functions
+* Save() & Load() functions
# See the examples/ for a sample fruit.proto file that documents what is needed
diff --git a/argv.go b/argv.go
index 237f1b0..5f6615b 100644
--- a/argv.go
+++ b/argv.go
@@ -29,6 +29,7 @@ type args struct {
Debug bool `arg:"--debug" help:"enable debugging information"`
Comments bool `arg:"--format-comments" help:"enforce parseable comments in a .proto file"`
NoFormat bool `arg:"--no-format" help:"do not auto-reformat the .proto file"`
+ Renumber bool `arg:"--renumber" help:"renumber everything. obviously breaks backwards compatiblity"`
GoSrc string `arg:"--go-src" help:"default is ~/go/src. could be set to your go.work path"`
GoPath string `arg:"--gopath" help:"the gopath of this repo"`
Identify string `arg:"--identify" help:"identify file"`
@@ -69,7 +70,7 @@ func (args) Buildtime() (string, string) {
func (a args) DoAutoComplete(pb *prep.Auto) {
if pb.Cmd == "" {
- pb.Autocomplete3([]string{"--bash", "--proto", "--regret", "--debug", "--delete", "--dry-run", "--version"})
+ pb.Autocomplete3([]string{"--bash", "--proto", "--regret", "--debug", "--renumber", "--delete", "--dry-run", "--version"})
} else {
pb.SubCommand(pb.Goargs...)
}
diff --git a/file.proto b/file.proto
index c5abf35..c799a98 100644
--- a/file.proto
+++ b/file.proto
@@ -79,6 +79,7 @@ message FormatMsg {
Type type = 9; // yep. type. yep. that's what this is for
bool padAfter = 10;
bool isEmpty = 11; // true when things like: message blah {}
+ int32 counter = 12; // used to check ints increment
}
message Find {
string parent = 1; // `autogenpb:unique` File
diff --git a/main.go b/main.go
index 2e71346..f07182b 100644
--- a/main.go
+++ b/main.go
@@ -35,10 +35,9 @@ var ARGNAME string = "autogenpb"
// var fsort *os.File // the sort.pb.go output file
func main() {
- auto := prep.Bash(&argv) // add support for bash autocomplete with go-arg
-
- var pb *Files
- pb = new(Files)
+ me = new(mainType)
+ me.sh = prep.Bash(&argv) // add support for bash autocomplete with go-arg
+ me.pb = new(Files)
if argv.Identify != "" {
if err := doIdentify(argv.Identify); err != nil {
@@ -50,7 +49,7 @@ func main() {
// you need a proto file
if argv.Proto == "" {
log.Info("you must provide --proto <filename>")
- auto.WriteHelp()
+ me.sh.WriteHelp()
os.Exit(-1)
}
@@ -64,15 +63,19 @@ func main() {
os.Exit(-1)
}
+ doProto(argv.Proto)
+}
+
+func doProto(argvProto string) error {
if argv.Format {
- protoReformatComments(argv.Proto)
+ protoReformatComments(argvProto)
// time.Sleep(5 * time.Second)
- protoReformat(argv.Proto)
+ protoReformat(argvProto)
log.Info("format done")
okExit("")
}
if argv.Comments {
- protoReformatComments(argv.Proto)
+ protoReformatComments(argvProto)
okExit("")
}
@@ -82,11 +85,11 @@ func main() {
}
pf := new(File)
- pb.Files = append(pb.Files, pf)
- pf.Filename = argv.Proto
+ me.pb.Files = append(me.pb.Files, pf)
+ pf.Filename = argvProto
pf.IterMap = make(map[string]string)
- pf.Filebase = strings.TrimSuffix(argv.Proto, ".proto")
+ pf.Filebase = strings.TrimSuffix(argvProto, ".proto")
// parse sort & marshal options from the .proto file
// this goes through the .proto files and looks
@@ -97,7 +100,7 @@ func main() {
}
if !argv.NoFormat {
- protoReformat(argv.Proto)
+ protoReformat(argvProto)
}
if pf.Bases == nil {
@@ -179,7 +182,7 @@ func main() {
// checkCmd("protoc")
// checkCmd("protoc-gen-go")
- if err := pb.protocBuild(pf); err != nil {
+ if err := me.pb.protocBuild(pf); err != nil {
badExit(err)
}
@@ -187,7 +190,7 @@ func main() {
os.Chdir(startpwd)
// try to add the Mutex to the pb.go file
- if err := pb.addMutex(pf); err != nil {
+ if err := me.pb.addMutex(pf); err != nil {
badExit(err)
}
@@ -198,27 +201,28 @@ func main() {
}
// make the marshal.pb.go file
- pb.marshal(pf)
+ me.pb.marshal(pf)
// make the sort.pb.go file
- if err := pb.makeNewSortfile(pf); err != nil {
+ if err := me.pb.makeNewSortfile(pf); err != nil {
badExit(err)
}
if pf.DoGui {
- if err := pb.makeGuiFile(pf); err != nil {
+ if err := me.pb.makeGuiFile(pf); err != nil {
badExit(err)
}
}
if pf.DoHTTP {
- if err := pb.makeHTTPFile(pf); err != nil {
+ if err := me.pb.makeHTTPFile(pf); err != nil {
badExit(err)
}
}
log.Info("")
log.Info("you may have to run 'goimport -w *.go' on the new *pb.go files")
log.Info("")
+ return nil
}
func okExit(s string) {
diff --git a/protoReformat.go b/protoReformat.go
index 8b49879..77cc723 100644
--- a/protoReformat.go
+++ b/protoReformat.go
@@ -8,6 +8,7 @@ import (
"iter"
"os"
"regexp"
+ "strconv"
"strings"
sync "sync"
@@ -565,6 +566,23 @@ func (msg *FormatMsg) formatVarLine(line string, dbg string) string {
vartype, varname, id, end := tokenMsgVar(line)
end = strings.TrimSpace(end)
+
+ if argv.Renumber {
+ // allows auto-renumbering
+ newint, err := strconv.Atoi(id)
+ if err != nil {
+ log.Info("i is wrong", msg, err)
+ panic("what?")
+ }
+ msg.Counter += 1
+ if int(msg.Counter) != newint {
+ // panic("you can't count")
+ log.Info("counter is wrong", newint, id, msg.Header)
+ }
+ id = fmt.Sprintf("%d", msg.Counter)
+ }
+ // log.Info("counter =", newint, msg.Header)
+ // msg.Counter = int32(newint)
id = id + ";"
newline := fmt.Sprintf(hmm, vartype, varname, id, end)
diff --git a/structs.go b/structs.go
new file mode 100644
index 0000000..86985d2
--- /dev/null
+++ b/structs.go
@@ -0,0 +1,16 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "go.wit.com/lib/gui/prep"
+)
+
+var me *mainType
+
+// this app's variables
+type mainType struct {
+ sh *prep.Auto // shell autocomplete
+ pb *Files // all the proto files as they get parsed (into another protobuf file)
+}