mirror of https://github.com/databricks/cli.git
ab05f8e6e7
## Changes In order to support variable interpolation on fields that aren't a string in the resource types, we need a separate representation of the bundle configuration tree with the type equivalent of Go's `any`. But instead of using `any` directly, we can do better and use a custom type equivalent to `any` that captures additional metadata. In this PR, the additional metadata is limited to the origin of the configuration value (file, line number, and column). The YAML in this commit uses the upstream YAML parser's `yaml.Node` type to get access to location information. It reimplements the loader that takes the `yaml.Node` structure and turns it into the configuration tree we need. Next steps after this PR: * Implement configuration tree type checking (against a Go type) * Implement configuration tree merging (to replace the current merge functionality) * Implement conversion to and from the bundle configuration struct * Perform variable interpolation against this configuration tree (to support variable interpolation for ints) * (later) Implement a `jsonloader` that produces the same tree and includes location information ## Tests The tests in `yamlloader` perform an equality check on the untyped output of loading a YAML file between the upstream YAML loader and this loader. The YAML examples were generated by prompting ChatGPT for examples that showcase anchors, primitive values, edge cases, etc. |
||
---|---|---|
.. | ||
yamlloader | ||
location.go | ||
location_test.go | ||
value.go | ||
value_test.go |