Commit Graph

12 Commits

Author SHA1 Message Date
Martin Atkins
1ba92ee170 cmd/hcldec: "transform" spec type
This new spec type allows evaluating an arbitrary expression on the
result of a nested spec, for situations where the a value must be
transformed in some way.
2018-02-04 09:59:20 -08:00
Martin Atkins
130b3c5105 hcldec: New function ChildBlockTypes
This function returns a map describing all of the child block types
declared inside a spec. This can be used for recursive decoding of bodies
using the low-level HCL API, though in most cases callers should just use
Decode which does recursive decoding of an entire nested structure in
a single call.
2018-01-27 09:10:18 -08:00
Martin Atkins
44bad6dbf5 hcldec: ImpliedType function
This function returns the type of value that should be returned when
decoding the given spec. As well as being generally useful to the caller
for book-keeping purposes, this also allows us to return correct type
information when we are returning null and empty values, where before we
were leaning a little too much on cty.DynamicPseudoType.
2017-10-03 16:27:34 -07:00
Martin Atkins
0d6247f4cf hcldec: BlockLabelSpec decoding
A BlockLabelSpec can be placed in the nested spec structure of one of the
block specs to require and obtain labels on that block.

This is a more generic methodology than BlockMapSpec since it allows the
result to be a list or set with the labels inside the values, rather than
forcing all the label tuples to be unique and losing the ordering by
collapsing into a map structure.
2017-10-03 15:59:20 -07:00
Martin Atkins
a6dff4e9f9 hcldec: BlockSetSpec and BlockMapSpec decode implementations 2017-10-03 14:44:54 -07:00
Martin Atkins
cbdf66e80a hcldec: register DefaultSpec with gob 2017-10-03 14:43:54 -07:00
Martin Atkins
2892561eed hcldec: Fix MinItems/MaxItems diagnostics messages
These were not previously consistent with the usual style.
2017-10-03 12:17:47 -07:00
Martin Atkins
cc215b6afe hcldec: ImpliedSchema must visit deep specs
Previously, due to a bug, it was only visiting the first two levels of
specifications, missing anything referenced at lower levels.
2017-10-03 12:17:47 -07:00
Martin Atkins
a4ee7188ad hcldec: New DefaultSpec specification
This is a wrapper that allows a default value to be applied if a primary
spec results in a null value.
2017-10-03 11:57:53 -07:00
Martin Atkins
46b20d40af Update doc comments and readmes for zcl -> HCL. 2017-09-11 16:56:31 -07:00
Martin Atkins
708abb8c97 Move the zcl package and its two parsing subpackages to "hcl" names
This is a super-invasive update since the "zcl" package in particular
is referenced all over.

There are probably still a few zcl references hanging around in comments,
etc but this takes care of most of it.
2017-09-11 16:40:37 -07:00
Martin Atkins
0dc3a6015c Rename the ancillary packages from "zcl" to "hcl".
The main "zcl" package requires a bit more care because of how many
callers it has and because of its two subpackages, so we'll take care
of that one separately.
2017-09-11 16:00:31 -07:00