protogen: generate message skeletons
Copy generator.CamelCase for camel-casing names, with one change: Convert
'.' in names to '_'. This removes the need for the CamelCaseSlice function
which operates on a []string representing a name split along '.'s.
Add protogen.Message.
Reformat generated code.
Add regenerate.bash, largely copied from regenerate.sh.
Change-Id: Iecf0bfc43b552f53e458499a328b933b0c9c5f82
Reviewed-on: https://go-review.googlesource.com/130915
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/cmd/protoc-gen-go/main.go b/cmd/protoc-gen-go/main.go
index 9ea1420..7973895 100644
--- a/cmd/protoc-gen-go/main.go
+++ b/cmd/protoc-gen-go/main.go
@@ -30,6 +30,21 @@
g.P("// source: ", f.Desc.GetName())
g.P()
g.P("package TODO")
+ g.P()
+
+ for _, m := range f.Messages {
+ genMessage(gen, g, m)
+ }
// TODO: Everything.
}
+
+func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, m *protogen.Message) {
+ g.P("type ", m.GoIdent, " struct {")
+ g.P("}")
+ g.P()
+
+ for _, nested := range m.Messages {
+ genMessage(gen, g, nested)
+ }
+}