mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00

There was inconsistency between variables used for function definitions in HCL and JSON format. Updated JSON to match HCL, fixed documentation and removed the unused code from userfunc pkg (based on HCL upstream) to avoid confusion. Theoretically we could add some temporary backwards compatibility for the JSON format but I think it is unlikely that someone uses JSON format for this and also defined variadic parameters. Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
29 lines
872 B
Markdown
29 lines
872 B
Markdown
# HCL User Functions Extension
|
|
|
|
This HCL extension allows a calling application to support user-defined
|
|
functions.
|
|
|
|
Functions are defined via a specific block type, like this:
|
|
|
|
```hcl
|
|
function "add" {
|
|
params = [a, b]
|
|
result = a + b
|
|
}
|
|
|
|
function "list" {
|
|
params = []
|
|
variadic_params = items
|
|
result = items
|
|
}
|
|
```
|
|
|
|
The extension is implemented as a pre-processor for `cty.Body` objects. Given
|
|
a body that may contain functions, the `DecodeUserFunctions` function searches
|
|
for blocks that define functions and returns a functions map suitable for
|
|
inclusion in a `hcl.EvalContext`. It also returns a new `cty.Body` that
|
|
contains the remainder of the content from the given body, allowing for
|
|
further processing of remaining content.
|
|
|
|
For more information, see [the godoc reference](https://pkg.go.dev/github.com/hashicorp/hcl/v2/ext/userfunc?tab=doc).
|