šŸ“‚ protocol generator + golang text/template (protobuf)
Go Ruby Makefile
Latest commit 199050c Jan 17, 2017 @zoontek zoontek committed on GitHub Merge pull request #45 from gfanton/namespaced-type
Namespaced type
Failed to load latest commit information.
contrib/homebrew Add Homebrew support #3 Nov 6, 2016
slides Add slides (#16) Dec 13, 2016
vendor/github.com feat (helper): handle google.api.http option with httpVerb and httpPath Dec 22, 2016
.gitignore Setup unit tests (fix #13) Dec 12, 2016
.travis.yml Fix travis Dec 21, 2016
Dockerfile bump funcmap@1.1.1 Dec 1, 2016
LICENSE Initial commit Nov 4, 2016
Makefile Rename js-grpc folder, add enums to example file Jan 6, 2017
README.md Update README.md Dec 27, 2016
encoder.go Add all arguments Jan 12, 2017
glide.lock Bump deps Dec 21, 2016
glide.yaml Rewrite simple test (only grpc output) Dec 20, 2016
main.go Concatenate if file already exist Jan 17, 2017



šŸ“‚ protocol generator + golang text/template (protobuf)

Generic protocol buffer generator backed by Golang's text/template.

This is a generator plugin for the Google Protocol Buffers compiler (protoc).

The plugin can generate files based on a template directory using the Golang's text/template engine.


protoc-gen-gotemplate requires a template_dir directory (by default ./templates).

Every files ending with .tmpl will be processed and written in the destination folder, following the file hierarchy of the template_dir, and removing the .tmpl extension.

$> ls -R
input.proto     templates/doc.txt.tmpl      templates/config.json.tmpl
$> protoc --gotemplate_out=. input.proto
$> ls -R
input.proto     templates/doc.txt.tmpl      templates/config.json.tmpl
doc.txt         config.json

You can specify a custom template_dir or enable debug:

$> protoc --gotemplate_out=debug=true,template_dir=/path/to/template/directory:. input.proto

See examples.


This project uses Masterminds/sprig library and additional functions to extend the builtin text/template helpers.

Non-exhaustive list of new helpers:

  • all the functions from sprig
  • json
  • prettyjson
  • first
  • last

See the project helpers for the complete list.


  • Install the Go compiler and tools from https://golang.org/doc/install
  • Install protobuf: go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
  • Install protoc-gen-gotemplate: go get -u github.com/moul/protoc-gen-gotemplate

Projects using protoc-gen-gotemplate

  • kafka-gateway: Kafka gateway/proxy (gRPC + http) using Go-Kit
  • translator: Translator Micro-service using Gettext and Go-Kit
  • acl: ACL micro-service (gRPC/protobuf + http/json)