Skip to content

Instantly share code, notes, and snippets.

@dpp-name
Last active August 29, 2015 14:06
Show Gist options
  • Save dpp-name/5d9553cddaaba8f7d3cc to your computer and use it in GitHub Desktop.
Save dpp-name/5d9553cddaaba8f7d3cc to your computer and use it in GitHub Desktop.
Google Protocol Buffers compiler plugin example
> protoc --plugin=utils/protoc-gen-demo --demo_out=. demo.proto && \
cat demo.proto.txt
enum MessageType
SERVER_SEARCH_CITIES
CLIENT_FOUND_CITIES
message RPCMessage
version
message_id
body
message MessageBody
message_type
city_query
cities
client_notification
message CityQuery
name
message Cities
cities
message City
id
name
longitude
latitude
#!/usr/bin/env python
import sys
from google.protobuf.compiler.plugin_pb2 \
import CodeGeneratorRequest, CodeGeneratorResponse
request = CodeGeneratorRequest()
request.ParseFromString(sys.stdin.read())
response = CodeGeneratorResponse()
for file in request.proto_file:
out = ''
for enum in file.enum_type:
out += 'enum ' + enum.name + '\n'
for value in enum.value:
out += '\t' + value.name + '\n'
for message in file.message_type:
out += 'message ' + message.name + '\n'
for field in message.field:
out += '\t' + field.name + '\n'
f = response.file.add()
f.name = file.name + '.txt'
f.content = out
sys.stdout.write(response.SerializeToString())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment