hcl/ext
Martin Atkins f9f92da699 ext/dynblock: Allow interrogation of _all_ references in blocks
Our API previously had a function only for retrieving the variables used
in the for_each and labels arguments used during an Expand call, and
expected callers to then interrogate the resulting expanded block to find
the other variables required to fully decode the content.

That approach is insufficient for any application that needs to know the
full set of required variables before any evaluation begins, such as when
a dependency graph will be constructed to allow a topological traversal
through blocks while evaluating.

Now we have WalkVariables, which finds both the variables used to expand
_and_ the variables within any blocks. This also renames
WalkForEachVariables to WalkExpandVariables since that name is more
accurate with the addition of the "label" argument into the expand-time
dependency set.

There is also a hcldec-based helper wrapper for each of those, allowing
single-shot analysis of blocks for applications that use hcldec.

This is a breaking change to the dynblock package API, because the old
WalkForEachVariables and ForEachVariablesHCLDec functions are no longer
present.
2019-03-18 16:28:30 -07:00
..
dynblock ext/dynblock: Allow interrogation of _all_ references in blocks 2019-03-18 16:28:30 -07:00
include ext/include: update stale reference to "zcl" 2018-01-27 11:03:05 -08:00
transform go fmt updates 2018-12-11 16:49:03 -08:00
typeexpr ext/typeexpr: correct examples in the README 2018-04-05 19:34:53 -07:00
userfunc ext/userfunc: use bare identifiers for param names 2018-02-04 11:20:42 -08:00
README.md Update doc comments and readmes for zcl -> HCL. 2017-09-11 16:56:31 -07:00

HCL Extensions

This directory contains some packages implementing some extensions to HCL that add features by building on the core API in the main hcl package.

These serve as optional language extensions for use-cases that are limited only to specific callers. Generally these make the language more expressive at the expense of increased dynamic behavior that may be undesirable for applications that need to impose more rigid structure on configuration.