Go to file
2016-12-15 13:31:16 +01:00
contrib/homebrew Add Homebrew support #3 2016-11-06 20:20:11 +01:00
examples Update examp;le 2016-12-15 11:06:42 +01:00
slides Add slides (#16) 2016-12-13 19:08:37 +01:00
vendor/github.com Replace funcmap dep with sprig 2016-12-15 12:03:02 +01:00
.gitignore Setup unit tests (fix #13) 2016-12-12 19:35:59 +01:00
.travis.yml Install golang deps 2016-12-13 17:39:02 +01:00
Dockerfile bump funcmap@1.1.1 2016-12-01 10:19:09 +01:00
encoder.go Extract ProtoHelpersFuncMap in its own file 2016-12-15 13:28:57 +01:00
glide.lock Replace funcmap dep with sprig 2016-12-15 12:03:02 +01:00
glide.yaml Replace funcmap dep with sprig 2016-12-15 12:03:02 +01:00
helpers.go use interfaces instead of strings 2016-12-15 13:31:16 +01:00
LICENSE Initial commit 2016-11-04 21:44:49 +01:00
main.go don't print error when debug=false 2016-12-14 11:08:51 +01:00
Makefile make test now tests the go-kit example 2016-12-13 17:21:15 +01:00
README.md Add funcmap description in the README 2016-12-12 17:24:39 +01:00

protoc-gen-gotemplate

📂 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.

Usage

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.

Funcmap

This project uses moul/funcmap library to extend the builtin text/template helpers.

Non-exhaustive list of new helpers:

  • json
  • prettyjson
  • indent
  • split
  • join
  • title
  • unexport
  • add
  • trimspace
  • lower
  • upper
  • rev
  • int

See the project for the complete list.

Install

  • 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

License

MIT