Sick of
sed? Peaked aboutperl? Usetempleto substitute your variables!
I have pre-built binaries for several platform already. They are available on the releases page.
If you have go v1.6 installed, then you can build the binary with the following command:
go install docwhat.org/templeUsage: temple <template-file>
A simple templating engine
Arguments:
<template-file> The template file to use ($TEMPLE_TEMPLATE_FILE)
Flags:
-h, --help Show context-sensitive help.
--version Show version information
-d, --data=DATA-FILE A YAML or JSON file to use via the {{data.<foo>}} interface ($TEMPLE_DATA_FILE)
-H, --html Use HTML templating instead of text templating ($TEMPLE_USE_HTML)
Note that the DATA file must have an object at the top level. You cannot use a bare string or an array.
JSON Example:
{
"key": "value",
"key2": 2
}YAML Example:
key: "value"
key2: 2For complete documentation, read go's text/template and html/template.
Temple supports the complete list of Sprig functions.
{{hostname}}-- The systems fully qualified domain name.{{uid}}--UIDof the user runningtemple.{{gid}}--GIDof the user runningtemple.{{euid}}-- EffectiveUIDof the user runningtemple.{{egid}}-- EffectiveGIDof the user runningtemple.{{pwd}}-- The current working directory.{{json}}-- Access to your JSON data. Use dot notation to get access to items. e.g.{{json.authors.greenwood.first_name}}
{{index <expr> 99}}-- The 99th item of the array<expr>.{{<expr> | js}}--<expr>escaped/quoted for JavaScript & JSON.{{<expr> | html}}--<expr>escaped/quoted for HTML.{{<expr> | urlquery}}--<expr>escaped/quoted for a URL quoting. i.e. replacing spaces with+and using%NNsyntax.{{<expr> | shellquote}}--<expr>escaped/quoted for POSIX shells.{{<expr> | len}}-- The length of the<expr>.
{{if <expr>}}true string{{else}}false string{{end}}-- If/Else syntax. The{{else}}is optional.{{range <array>}} item: {{.}} {{else}} The list is empty {{end}}-- Iterate over<array>. The{{else}}is optional.
{{<expr> -}}-- Trim whitespace to the right. e.g.{{1 -}} .0becomes1.0.{{- <expr>}}-- Trim whitespace to the left.{{- <expr> -}}-- Trim whitespace to the right and left.{{/* comment */}}-- Comments!
- @alecthomas for kingpin
- @kballard for go-shellquote
- @seh for Go help