proto

parser for Google ProtocolBuffers definition

Github stars Tracking Chart

proto

Build Status
Go Report Card
GoDoc

Package in Go for parsing Google Protocol Buffers [.proto files version 2 + 3] (https://developers.google.com/protocol-buffers/docs/reference/proto3-spec)

install

go get -u -v github.com/emicklei/proto

usage

package main

import (
	"fmt"
	"os"

	"github.com/emicklei/proto"
)

func main() {
	reader, _ := os.Open("test.proto")
	defer reader.Close()

	parser := proto.NewParser(reader)
	definition, _ := parser.Parse()

	proto.Walk(definition,
		proto.WithService(handleService),
		proto.WithMessage(handleMessage))
}

func handleService(s *proto.Service) {
	fmt.Println(s.Name)
}

func handleMessage(m *proto.Message) {
	fmt.Println(m.Name)
}

validation

Current parser implementation is not completely validating .proto definitions.
In many but not all cases, the parser will report syntax errors when reading unexpected charaters or tokens.
Use some linting tools (e.g. https://github.com/uber/prototool) or protoc for full validation.

contributions

See proto-contrib for other contributions on top of this package such as protofmt, proto2xsd and proto2gql.
protobuf2map is a small package for inspecting serialized protobuf messages using its .proto definition.

© 2017, ernestmicklei.com. MIT License. Contributions welcome.

Main metrics

Overview
Name With Owneremicklei/proto
Primary LanguageGo
Program languageGo (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2017-01-26 21:30:48
Pushed At2024-12-18 12:28:02
Last Commit At2024-12-18 13:23:41
Release Count50
Last Release Namev1.14.0 (Posted on 2024-12-18 13:28:01)
First Release Nameproto2xsd-0.2 (Posted on 2017-07-12 06:06:00)
用户参与
Stargazers Count601
Watchers Count10
Fork Count67
Commits Count245
Has Issues Enabled
Issues Count78
Issue Open Count0
Pull Requests Count61
Pull Requests Open Count0
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private