complate
is a general purpose text templating CLI program that supports interactive mode, prompting the user for values via TUI behaviour and headless mode for use in automation such as CI pipelines.
cargo install complate
version: 0.15
templates:
zero:
content:
inline: |-
{{ a.alpha }}
{{ b.bravo }}
variables:
a.alpha:
static: alpha
b.bravo: arg
one:
content:
file: ./.complate/templates/arbitraty-template-file.tpl
variables:
a.pwd:
env: "PWD"
two:
content:
inline: |-
{{ a.alpha }}
{{ b.bravo }}
{{ c.charlie }}
{{ d.delta }}
{{ e.echo }}
variables:
a.alpha:
prompt: "alpha"
b.bravo:
shell: "printf bravo"
c.charlie:
static: "charlie"
d.delta:
select:
text: Select the version level that shall be incremented
options:
alpha:
display: alpha
value:
static: alpha
bravo:
display: bravo
value:
shell: printf bravo
e.echo:
check:
text: Select the components that are affected
separator: ", "
options:
alpha:
display: alpha
value:
static: alpha
bravo:
display: bravo
value:
shell: printf bravo
f.foxtrot:
env: "FOXTROT"
three:
content:
inline: |-
{{ test }}
{{ _decode "dGVzdA==" }}
helpers:
"_decode": printf "$(printf $VALUE | base64 -D)"
variables:
test:
static: "test"
Key | Behaviour | Input |
---|---|---|
arg | Expects input as argument via command line input | None |
env | Retrieves value from the specified env var | None |
static | Simply replaces the variable with a static value | None |
prompt | Asks the user for text input (can be empty) | The prompt |
shell | Invokes a shell command to resolve the variable (read from STDOUT ) |
None |
select | Asks the user to select one item from a list | text : string (context), options : list (available options to select from) |
check | Asks the user to select 0..n item(s) from a list (multiselect) |
text : string (context), options : list of options {display: str, value: str} (the available options to select from) |
Since the shell
value provider is able to run arbitrary shell commands, it is only allowed if and only if the SHELL_TRUST
argument is explicitly set. See the render
command reference for possible values for this setting. If not set, the provider will throw an unrecoverable error and the program will abort.
All features that are marked as experimental
are not considered a public API and therefore eplicitly not covered by the backwards-compatibility policy inside a major version (see https://semver.org[semver v2]). Use these features on your own risk!