Public API for expand template
## expand_template_rule
expand_template_rule(name, data, out, is_executable, stamp, stamp_substitutions, substitutions,
template)
Template expansion
This performs a simple search over the template file for the keys in substitutions,
and replaces them with the corresponding values.
Values may also use location templates as documented in
[expand_locations](https://github.com/bazel-contrib/bazel-lib/blob/main/docs/expand_make_vars.md#expand_locations)
as well as [configuration variables](https://docs.bazel.build/versions/main/skylark/lib/ctx.html#var)
such as `$(BINDIR)`, `$(TARGET_CPU)`, and `$(COMPILATION_MODE)` as documented in
[expand_variables](https://github.com/bazel-contrib/bazel-lib/blob/main/docs/expand_make_vars.md#expand_variables).
**ATTRIBUTES**
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| name | A unique name for this target. | Name | required | |
| data | List of targets for additional lookup information. | List of labels | optional | `[]` |
| out | Where to write the expanded file.
If the `template` is a source file, then `out` defaults to be named the same as the template file and outputted to the same workspace-relative path. In this case there will be no pre-declared label for the output file. It can be referenced by the target label instead. This pattern is similar to `copy_to_bin` but with substitutions on the copy.
Otherwise, `out` defaults to `[name].txt`. | Label | optional | `None` |
| is_executable | Whether to mark the output file as executable. | Boolean | optional | `False` |
| stamp | Whether to encode build information into the output. Possible values:
- `stamp = 1`: Always stamp the build information into the output, even in [--nostamp](https://docs.bazel.build/versions/main/user-manual.html#flag--stamp) builds. This setting should be avoided, since it is non-deterministic. It potentially causes remote cache misses for the target and any downstream actions that depend on the result. - `stamp = 0`: Never stamp, instead replace build information by constant values. This gives good build result caching. - `stamp = -1`: Embedding of build information is controlled by the [--[no]stamp](https://docs.bazel.build/versions/main/user-manual.html#flag--stamp) flag. Stamped targets are not rebuilt unless their dependencies change. | Integer | optional | `-1` |
| stamp_substitutions | Mapping of strings to substitutions.
There are overlaid on top of substitutions when stamping is enabled for the target.
Substitutions can contain $(execpath :target) and $(rootpath :target) expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when stamping is enabled for the target. | Dictionary: String -> String | optional | `{}` |
| substitutions | Mapping of strings to substitutions.
Substitutions can contain $(execpath :target) and $(rootpath :target) expansions, $(MAKEVAR) expansions and {{STAMP_VAR}} expansions when stamping is enabled for the target. | Dictionary: String -> String | optional | `{}` |
| template | The template file to expand. | Label | required | |
## expand_template
expand_template(name, template, kwargs)
Wrapper macro for `expand_template_rule`.
**PARAMETERS**
| Name | Description | Default Value |
| :------------- | :------------- | :------------- |
| name | name of resulting rule | none |
| template | the label of a template file, or a list of strings which are lines representing the content of the template. | none |
| kwargs | other named parameters to `expand_template_rule`. | none |