blob: bfae8ebd86c93ede7fe4169a563cc5db5d3e3a41 [file] [log] [blame]
Damien Neil220c2022018-08-15 11:24:18 -07001// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// The protoc-gen-go binary is a protoc plugin to generate a Go protocol
6// buffer package.
7package main
8
9import (
10 "strings"
11
12 "google.golang.org/proto/protogen"
13)
14
15func main() {
16 protogen.Run(func(gen *protogen.Plugin) error {
17 for _, f := range gen.Files {
18 if !f.Generate {
19 continue
20 }
21 genFile(gen, f)
22 }
23 return nil
24 })
25}
26
27func genFile(gen *protogen.Plugin, f *protogen.File) {
Damien Neilabc6fc12018-08-23 14:39:30 -070028 g := gen.NewGeneratedFile(strings.TrimSuffix(f.Desc.Path(), ".proto")+".pb.go", f.GoImportPath)
Damien Neil220c2022018-08-15 11:24:18 -070029 g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
Damien Neilabc6fc12018-08-23 14:39:30 -070030 g.P("// source: ", f.Desc.Path())
Damien Neil220c2022018-08-15 11:24:18 -070031 g.P()
32 g.P("package TODO")
Damien Neilc7d07d92018-08-22 13:46:02 -070033 g.P()
34
35 for _, m := range f.Messages {
36 genMessage(gen, g, m)
37 }
Damien Neil220c2022018-08-15 11:24:18 -070038
39 // TODO: Everything.
40}
Damien Neilc7d07d92018-08-22 13:46:02 -070041
42func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, m *protogen.Message) {
43 g.P("type ", m.GoIdent, " struct {")
44 g.P("}")
45 g.P()
46
47 for _, nested := range m.Messages {
48 genMessage(gen, g, nested)
49 }
50}