Need help with gomplate?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

hairyhenderson
1.3K Stars 91 Forks MIT License 1.4K Commits 32 Opened issues

Description

A flexible commandline tool for template rendering. Supports lots of local and remote datasources.

Services available

!
?

Need anything else?

Contributors list

gomplate logo

Read the docs at docs.gomplate.ca, chat with developers and community in the #gomplate channel on Gophers Slack

Build Status Build Go Report Card Codebeat Status Coverage Total Downloads CII Best Practices

hairyhenderson/gomplate on DockerHub DockerHub Stars DockerHub Pulls DockerHub Image Layers DockerHub Latest Version DockerHub Latest Commit

Chocolatey Chocolatey

Install Docs Slack Discussions

gomplate
is a template renderer which supports a growing list of datasources, such as: JSON (including EJSON - encrypted JSON), YAML, AWS EC2 metadata, BoltDB, Hashicorp Consul and Hashicorp Vault secrets.

Come chat with developers and community in the #gomplate channel on Gophers Slack and on GitHub Discussions!

Here are some hands-on examples of how

gomplate
works:
$ # at its most basic, gomplate can be used with environment variables...
$ echo 'Hello, {{ .Env.USER }}' | gomplate
Hello, hairyhenderson

$ # but that's kind of boring. gomplate has tons of functions to do useful stuff, too $ gomplate -i 'the answer is: {{ mul 6 7 }}' the answer is: 42

$ # and, since gomplate uses Go's templating syntax, you can do fun things like: $ gomplate -i '{{ range seq 5 1 }}{{ . }} {{ if eq . 1 }}{{ "blastoff" | toUpper }}{{ end }}{{ end }}' 5 4 3 2 1 BLASTOFF

$ # the real fun comes when you use datasources! $ cat ./config.yaml foo: bar: baz: qux $ gomplate -d config=./config.yaml -i 'the value we want is: {{ (datasource "config").foo.bar.baz }}' the value we want is: qux

$ # datasources are defined by URLs, and gomplate is not limited to just file-based datasources: $ gomplate -d ip=https://ipinfo.io -i 'country code: {{ (ds "ip").country }}' country code: CA

$ # standard input can be used as a datasource too: $ echo '{"cities":["London", "Johannesburg", "Windhoek"]}' | gomplate -d city=stdin:///in.json -i '{{ range (ds "city").cities }}{{.}}, {{end}}' London, Johannesburg, Windhoek,

$ # and here's something a little more complicated: $ export CITIES='city: [London, Johannesburg, Windhoek]' $ cat in.tmpl {{ range $i, $city := (ds "cities").city -}} {{ add 1 $i }}: {{ include "weather" (print $city "?0") }} {{ end }} $ gomplate -d 'cities=env:///CITIES?type=application/yaml' -d 'weather=https://wttr.in/?0' -H 'weather=User-Agent: curl' -f in.tmpl 1: Weather report: London

\  /       Partly cloudy

_ /"".-. 4-7 °C _( ). ↑ 20 km/h /(___(__) 10 km 0.0 mm

2: Weather report: Johannesburg

\  /       Partly cloudy

_ /"".-. 15 °C _( ). ↘ 0 km/h /(___(__) 10 km 2.2 mm

3: Weather report: Windhoek

\  /       Partly cloudy

_ /"".-. 20 °C _( ). ↑ 6 km/h /(___(__) 20 km 0.0 mm

Read the documentation at docs.gomplate.ca, and join the discussion in GitHub Discussions!

Please report any bugs found in the issue tracker.

License

The MIT License

Copyright (c) 2016-2021 Dave Henderson

Analytics

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.