diff --git a/.vscode/tasks.json b/.vscode/tasks.json index d1d41bc..b18827c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,7 +2,7 @@ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", - "command": "proto3fmt", + "command": "protofmt", "isShellCommand": true, "args": ["${file}"], "showOutput": "always" diff --git a/README.md b/README.md index f8e80db..4f7a6db 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ -# proto3 +# proto -[![Build Status](https://travis-ci.org/emicklei/proto3.png)](https://travis-ci.org/emicklei/proto3) -[![GoDoc](https://godoc.org/github.com/emicklei/proto3?status.svg)](https://godoc.org/github.com/emicklei/proto3) +[![Build Status](https://travis-ci.org/emicklei/proto.png)](https://travis-ci.org/emicklei/proto) +[![GoDoc](https://godoc.org/github.com/emicklei/proto?status.svg)](https://godoc.org/github.com/emicklei/proto) -Package in Go for parsing Google Protocol Buffers [.proto files version 3] (https://developers.google.com/protocol-buffers/docs/reference/proto3-spec) +Package in Go for parsing Google Protocol Buffers [.proto files version 3] (https://developers.google.com/protocol-buffers/docs/reference/proto-spec) ### usage - parser := proto3.NewParser(anIOReader) + parser := proto.NewParser(anIOReader) proto, err := parser.Parse() if err != nil { - log.Fatalln("proto3 parsing failed", err) + log.Fatalln("proto parsing failed", err) } ### install - go get -u -v github.com/emicklei/proto3 + go get -u -v github.com/emicklei/proto © 2017, ernestmicklei.com. MIT License. Contributions welcome. \ No newline at end of file diff --git a/cmd/proto3fmt/formatter.go b/cmd/protofmt/formatter.go similarity index 81% rename from cmd/proto3fmt/formatter.go rename to cmd/protofmt/formatter.go index 7ae0314..bf91fce 100644 --- a/cmd/proto3fmt/formatter.go +++ b/cmd/protofmt/formatter.go @@ -6,7 +6,7 @@ import ( "strings" - "github.com/emicklei/proto3" + "github.com/emicklei/proto" ) type formatter struct { @@ -16,7 +16,7 @@ type formatter struct { indentSeparator string } -func (f *formatter) VisitComment(c *proto3.Comment) { +func (f *formatter) VisitComment(c *proto.Comment) { f.begin("comment") if c.IsMultiline() { fmt.Fprintln(f.w, "/*") @@ -27,7 +27,7 @@ func (f *formatter) VisitComment(c *proto3.Comment) { } } -func (f *formatter) VisitEnum(e *proto3.Enum) { +func (f *formatter) VisitEnum(e *proto.Enum) { f.begin("enum") fmt.Fprintf(f.w, "enum %s {", e.Name) f.indentLevel++ @@ -38,7 +38,7 @@ func (f *formatter) VisitEnum(e *proto3.Enum) { io.WriteString(f.w, "}\n") } -func (f *formatter) VisitEnumField(e *proto3.EnumField) { +func (f *formatter) VisitEnumField(e *proto.EnumField) { f.begin("field") io.WriteString(f.w, paddedTo(e.Name, 10)) fmt.Fprintf(f.w, " = %d", e.Integer) @@ -50,7 +50,7 @@ func (f *formatter) VisitEnumField(e *proto3.EnumField) { } } -func (f *formatter) VisitImport(i *proto3.Import) { +func (f *formatter) VisitImport(i *proto.Import) { f.begin("import") if len(i.Kind) > 0 { fmt.Fprintf(f.w, "import %s ", i.Kind) @@ -58,7 +58,7 @@ func (f *formatter) VisitImport(i *proto3.Import) { fmt.Fprintf(f.w, "import %q;\n", i.Filename) } -func (f *formatter) VisitMessage(m *proto3.Message) { +func (f *formatter) VisitMessage(m *proto.Message) { f.begin("message") fmt.Fprintf(f.w, "message %s {", m.Name) f.newLineIf(len(m.Elements) > 0) @@ -70,7 +70,7 @@ func (f *formatter) VisitMessage(m *proto3.Message) { io.WriteString(f.w, "}\n") } -func (f *formatter) VisitOption(o *proto3.Option) { +func (f *formatter) VisitOption(o *proto.Option) { if o.IsEmbedded { io.WriteString(f.w, "[(") } else { @@ -92,12 +92,12 @@ func (f *formatter) VisitOption(o *proto3.Option) { } } -func (f *formatter) VisitPackage(p *proto3.Package) { +func (f *formatter) VisitPackage(p *proto.Package) { f.begin("package") fmt.Fprintf(f.w, "package %s;\n", p.Name) } -func (f *formatter) VisitService(s *proto3.Service) { +func (f *formatter) VisitService(s *proto.Service) { f.begin("service") fmt.Fprintf(f.w, "service %s {", s.Name) f.indentLevel++ @@ -108,11 +108,11 @@ func (f *formatter) VisitService(s *proto3.Service) { io.WriteString(f.w, "}\n") } -func (f *formatter) VisitSyntax(s *proto3.Syntax) { +func (f *formatter) VisitSyntax(s *proto.Syntax) { fmt.Fprintf(f.w, "syntax = %q;\n\n", s.Value) } -func (f *formatter) VisitOneof(o *proto3.Oneof) { +func (f *formatter) VisitOneof(o *proto.Oneof) { f.begin("oneof") fmt.Fprintf(f.w, "oneof %s {", o.Name) f.indentLevel++ @@ -123,7 +123,7 @@ func (f *formatter) VisitOneof(o *proto3.Oneof) { io.WriteString(f.w, "}\n") } -func (f *formatter) VisitOneofField(o *proto3.OneOfField) { +func (f *formatter) VisitOneofField(o *proto.OneOfField) { f.begin("oneoffield") fmt.Fprintf(f.w, "%s %s = %d", o.Type, o.Name, o.Sequence) for _, each := range o.Options { @@ -132,7 +132,7 @@ func (f *formatter) VisitOneofField(o *proto3.OneOfField) { io.WriteString(f.w, ";\n") } -func (f *formatter) VisitReserved(r *proto3.Reserved) { +func (f *formatter) VisitReserved(r *proto.Reserved) { f.begin("reserved") io.WriteString(f.w, "reserved") if len(r.Ranges) > 0 { @@ -148,7 +148,7 @@ func (f *formatter) VisitReserved(r *proto3.Reserved) { io.WriteString(f.w, ";\n") } -func (f *formatter) VisitRPC(r *proto3.RPC) { +func (f *formatter) VisitRPC(r *proto.RPC) { f.begin("rpc") fmt.Fprintf(f.w, "rpc %s (", r.Name) if r.StreamsRequest { @@ -163,12 +163,12 @@ func (f *formatter) VisitRPC(r *proto3.RPC) { io.WriteString(f.w, ");\n") } -func (f *formatter) VisitMapField(m *proto3.MapField) { +func (f *formatter) VisitMapField(m *proto.MapField) { f.begin("map") fmt.Fprintf(f.w, "map<%s,%s> %s = %d;\n", m.KeyType, m.Type, m.Name, m.Sequence) } -func (f *formatter) VisitNormalField(f1 *proto3.NormalField) { +func (f *formatter) VisitNormalField(f1 *proto.NormalField) { f.begin("field") if f1.Repeated { io.WriteString(f.w, "repeated ") diff --git a/cmd/proto3fmt/main.go b/cmd/protofmt/main.go similarity index 62% rename from cmd/proto3fmt/main.go rename to cmd/protofmt/main.go index 510db9c..8cf7732 100644 --- a/cmd/proto3fmt/main.go +++ b/cmd/protofmt/main.go @@ -4,24 +4,23 @@ import ( "log" "os" - "github.com/emicklei/proto3" + "github.com/emicklei/proto" ) -// go run *.go example1.proto -// go run *.go example0.proto +// go run *.go unformatted.proto func main() { if len(os.Args) == 1 { - log.Fatal("Usage: proto3fmt my.proto") + log.Fatal("Usage: protofmt my.proto") } i, err := os.Open(os.Args[1]) if err != nil { log.Fatal(err) } defer i.Close() - p := proto3.NewParser(i) + p := proto.NewParser(i) def, err := p.Parse() if err != nil { - log.Fatalln("proto3fmt failed", err) + log.Fatalln("protofmt failed", err) } f := &formatter{w: os.Stdout, indentSeparator: " "} for _, each := range def.Elements { diff --git a/cmd/proto3fmt/unformatted.proto b/cmd/protofmt/unformatted.proto similarity index 95% rename from cmd/proto3fmt/unformatted.proto rename to cmd/protofmt/unformatted.proto index 38d997a..de67d42 100644 --- a/cmd/proto3fmt/unformatted.proto +++ b/cmd/protofmt/unformatted.proto @@ -13,7 +13,7 @@ import public "testdata/test.proto"; /* This pkg */ -package here.proto3_proto ; +package here.proto_proto ; // from a bottle diff --git a/cmd/proto3fmt/unittest_proto3.proto b/cmd/protofmt/unittest_proto3.proto similarity index 98% rename from cmd/proto3fmt/unittest_proto3.proto rename to cmd/protofmt/unittest_proto3.proto index b539118..dce37be 100644 --- a/cmd/proto3fmt/unittest_proto3.proto +++ b/cmd/protofmt/unittest_proto3.proto @@ -34,7 +34,7 @@ // // A proto file we will use for unit testing. -syntax = "proto3"; +syntax = "proto"; // Some generic_services option(s) added automatically. // See: http://go/proto2-generic-services-default @@ -44,7 +44,7 @@ option py_generic_services = true; // auto-added option cc_enable_arenas = true; option csharp_namespace = "Google.Protobuf.TestProtos"; -import "google/protobuf/unittest_import_proto3.proto"; +import "google/protobuf/unittest_import_proto.proto"; // We don't put this in a package within proto2 because we need to make sure // that the generated code doesn't depend on being in the proto2 namespace. @@ -221,7 +221,7 @@ enum TestSparseEnum { SPARSE_C = 12589234; SPARSE_D = -15; SPARSE_E = -53452; - // In proto3, value 0 must be the first one specified + // In proto, value 0 must be the first one specified // SPARSE_F = 0; SPARSE_G = 2; } diff --git a/cmd/proto3fmt/unittest_proto3_arena.proto b/cmd/protofmt/unittest_proto3_arena.proto similarity index 98% rename from cmd/proto3fmt/unittest_proto3_arena.proto rename to cmd/protofmt/unittest_proto3_arena.proto index edae8c8..9dc31ae 100644 --- a/cmd/proto3fmt/unittest_proto3_arena.proto +++ b/cmd/protofmt/unittest_proto3_arena.proto @@ -28,13 +28,13 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -syntax = "proto3"; +syntax = "proto"; option cc_enable_arenas = true; import "google/protobuf/unittest_import.proto"; -package proto3_arena_unittest; +package proto_arena_unittest; // This proto includes every type of field in both singular and repeated // forms. @@ -71,7 +71,7 @@ message TestAllTypes { string optional_string = 14; bytes optional_bytes = 15; - // Groups are not allowed in proto3. + // Groups are not allowed in proto. // optional group OptionalGroup = 16 { // optional int32 a = 17; // } @@ -114,7 +114,7 @@ message TestAllTypes { repeated string repeated_string = 44; repeated bytes repeated_bytes = 45; - // Groups are not allowed in proto3. + // Groups are not allowed in proto. // repeated group RepeatedGroup = 46 { // optional int32 a = 47; // } diff --git a/enum.go b/enum.go index b92f998..5af47ef 100644 --- a/enum.go +++ b/enum.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "fmt" diff --git a/enum_test.go b/enum_test.go index 64966ac..844004c 100644 --- a/enum_test.go +++ b/enum_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/field.go b/field.go index fb234f5..73599ce 100644 --- a/field.go +++ b/field.go @@ -1,4 +1,4 @@ -package proto3 +package proto // Field is an abstract message field. type Field struct { diff --git a/field_test.go b/field_test.go index 5e1cbc7..d745dfe 100644 --- a/field_test.go +++ b/field_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/import.go b/import.go index 0e0e900..d5c60f6 100644 --- a/import.go +++ b/import.go @@ -1,4 +1,4 @@ -package proto3 +package proto // Import holds a filename to another .proto definition. type Import struct { diff --git a/import_test.go b/import_test.go index cf4aada..efb0f7b 100644 --- a/import_test.go +++ b/import_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/message.go b/message.go index 491a3ed..4db62d6 100644 --- a/message.go +++ b/message.go @@ -1,4 +1,4 @@ -package proto3 +package proto // Message consists of a message name and a message body. type Message struct { diff --git a/message_test.go b/message_test.go index 3c414c5..4257efe 100644 --- a/message_test.go +++ b/message_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/oneof.go b/oneof.go index 0ef4fb4..53a0d9a 100644 --- a/oneof.go +++ b/oneof.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "fmt" diff --git a/oneof_test.go b/oneof_test.go index 7321bc4..208dc9e 100644 --- a/oneof_test.go +++ b/oneof_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/option.go b/option.go index 0799f02..3866113 100644 --- a/option.go +++ b/option.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "fmt" diff --git a/option_test.go b/option_test.go index 4116947..16f4aff 100644 --- a/option_test.go +++ b/option_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/package.go b/package.go index d9ea315..111caf1 100644 --- a/package.go +++ b/package.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "fmt" diff --git a/parser.go b/parser.go index 1bfa5ad..69f3d77 100644 --- a/parser.go +++ b/parser.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "fmt" diff --git a/parser_test.go b/parser_test.go index 43b7af4..e5b1b51 100644 --- a/parser_test.go +++ b/parser_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "strings" diff --git a/proto.go b/proto.go index 0ea1b0a..9984da5 100644 --- a/proto.go +++ b/proto.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "log" diff --git a/proto_test.go b/proto_test.go index 7b182f1..7d60564 100644 --- a/proto_test.go +++ b/proto_test.go @@ -1,9 +1,9 @@ -package proto3 +package proto import "testing" const example = ` -syntax = “proto3”; +syntax = “proto”; import public “other.proto”; option java_package = "com.example.foo"; enum EnumAllowingAlias { diff --git a/reserved.go b/reserved.go index 5da297a..0f89c3f 100644 --- a/reserved.go +++ b/reserved.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "fmt" diff --git a/reserved_test.go b/reserved_test.go index f059313..e7b0dd3 100644 --- a/reserved_test.go +++ b/reserved_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/scanner.go b/scanner.go index 8068bbb..c14de94 100644 --- a/scanner.go +++ b/scanner.go @@ -1,4 +1,4 @@ -package proto3 +package proto // partial code from https://raw.githubusercontent.com/benbjohnson/sql-parser/master/scanner.go diff --git a/scanner_test.go b/scanner_test.go index 3a4c32c..df80745 100644 --- a/scanner_test.go +++ b/scanner_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "strings" diff --git a/service.go b/service.go index 39b4c16..bc34493 100644 --- a/service.go +++ b/service.go @@ -1,4 +1,4 @@ -package proto3 +package proto // Service defines a set of RPC calls. type Service struct { diff --git a/service_test.go b/service_test.go index 98acbd2..5ba9ed5 100644 --- a/service_test.go +++ b/service_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import "testing" diff --git a/syntax.go b/syntax.go index d48c2e5..6eca510 100644 --- a/syntax.go +++ b/syntax.go @@ -1,6 +1,6 @@ -package proto3 +package proto -// Syntax should have value "proto3" +// Syntax should have value "proto" type Syntax struct { Value string } @@ -19,7 +19,7 @@ func (s *Syntax) parse(p *Parser) error { } tok, lit := p.scanIgnoreWhitespace() if tok != tIDENT { - return p.unexpected(lit, "proto3") + return p.unexpected(lit, "proto") } if tok, lit := p.scanIgnoreWhitespace(); tok != tQUOTE && tok != tSINGLEQUOTE { return p.unexpected(lit, "\" or '") diff --git a/syntax_test.go b/syntax_test.go index bdc0c05..c1c4d31 100644 --- a/syntax_test.go +++ b/syntax_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto import ( "strconv" @@ -6,7 +6,7 @@ import ( ) func TestSyntax(t *testing.T) { - proto := `syntax = "proto3";` + proto := `syntax = "proto";` p := newParserOn(proto) p.scanIgnoreWhitespace() // consume first token s := new(Syntax) @@ -14,7 +14,7 @@ func TestSyntax(t *testing.T) { if err != nil { t.Fatal(err) } - if got, want := s.Value, "proto3"; got != want { + if got, want := s.Value, "proto"; got != want { t.Errorf("got [%v] want [%v]", got, want) } } @@ -23,7 +23,7 @@ func TestCommentAroundSyntax(t *testing.T) { proto := ` // comment1 // comment2 - syntax = 'proto3'; // comment3 + syntax = 'proto'; // comment3 // comment4 ` p := newParserOn(proto) diff --git a/token.go b/token.go index 431698d..b80bd12 100644 --- a/token.go +++ b/token.go @@ -1,4 +1,4 @@ -package proto3 +package proto // token represents a lexical token. type token int diff --git a/visitor.go b/visitor.go index f89d41b..f8c3ef7 100644 --- a/visitor.go +++ b/visitor.go @@ -1,4 +1,4 @@ -package proto3 +package proto // Visitor is for dispatching Proto elements. type Visitor interface { diff --git a/visitor_test.go b/visitor_test.go index a26e069..9bab848 100644 --- a/visitor_test.go +++ b/visitor_test.go @@ -1,4 +1,4 @@ -package proto3 +package proto type collector struct { proto *Proto