templater icon indicating copy to clipboard operation
templater copied to clipboard

templater: the power of Go templates available on the command line

Ever wanted to use Go's text/template in shell tooling instead of having to use a here document? Well, now you can. templater is a command line tool that accepts an arbitrary template input file, and a JSON data file to use as the context for rendering the template.

Now you can drive templates that use inline conditionals, loops, format strings from the convenience of any script that allows you to fork out to templater.

This tool is an open source project of LiveRamp. Want to hack on cool Go projects at adtech scale? Come work for us!

Building

$ go get -u github.com/LiveRamp/templater
$ go install github.com/LiveRamp/templater

Usage

Usage of templater:
  -data string
        Data file to use as template context
  -template string
        Template to render

Example

Example template input file:

I have three students:
{{ range $index, $element := .Students }}
One student is named {{ $element }}.
{{ end }}

Example JSON data file:

{"Students": ["Curly", "Larry", "Moe"]}

Rendering the template:

$ templater -template example.tmpl -data example.json
I have three students:

One student is named Curly.

One student is named Larry.

One student is named Moe.

What's Next

  • Load multiple templates into the context so you can include other templates from the root template.
  • Multiple data files with precedence.
  • Additional template context functions defined in Go to reach parity with Erubis, Jinja, etc.