You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

49 lines
1.3 KiB

#!/bin/sh
##
## gomplate-generate
## generate a configuration snippets from a template the convenient way:
## - reads the parameters in YAML format from stdin
## - reads the defaults for parameters in YAML format from template "$name:params"
## - reads the configuration snippets from template "$name:template"
##
## Example:
##
## $ cat templates.txt
## {{ define "hello:params" -}}
## type: lovely
## name: world
## {{ end -}}
## {{ define "hello:template" -}}
## Hello {{ .type }} {{ .name }}!
## {{ end -}}
##
## $ gomplate-generate template.txt hello </dev/null
## Hello lovely world!
##
## $ echo "{ type: beautyful, name: galaxy }" | gomplate-generate template.txt hello
## Hello beautyful galaxy!
##
## $ echo "name: friend" | gomplate-generate template.txt hello
## Hello lovely friend!
##
template_path="$1"
template_name="$2"
cmd="@l_prefix@/bin/gomplate"
cmd="$cmd -d params=stdin:?type=application/yaml"
cmd="$cmd -i \"{{ template \\\"$template_name:template\\\""
cmd="$cmd (coll.Merge (ds \\\"params\\\") (tmpl.Exec \\\"$template_name:params\\\" | yaml)) }}\""
if [ -f $template_path ]; then
cmd="$cmd -t $template_path"
elif [ -d $template_path ]; then
for template_file in $template_path/*; do
if [ -f $template_file ]; then
cmd="$cmd -t $template_file"
fi
done
fi
eval "$cmd"