diff options
Diffstat (limited to 'vendor/github.com/hashicorp/terraform/configs/parser_values.go')
-rw-r--r-- | vendor/github.com/hashicorp/terraform/configs/parser_values.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/terraform/configs/parser_values.go b/vendor/github.com/hashicorp/terraform/configs/parser_values.go new file mode 100644 index 0000000..b7f1c1c --- /dev/null +++ b/vendor/github.com/hashicorp/terraform/configs/parser_values.go | |||
@@ -0,0 +1,43 @@ | |||
1 | package configs | ||
2 | |||
3 | import ( | ||
4 | "github.com/hashicorp/hcl2/hcl" | ||
5 | "github.com/zclconf/go-cty/cty" | ||
6 | ) | ||
7 | |||
8 | // LoadValuesFile reads the file at the given path and parses it as a "values | ||
9 | // file", which is an HCL config file whose top-level attributes are treated | ||
10 | // as arbitrary key.value pairs. | ||
11 | // | ||
12 | // If the file cannot be read -- for example, if it does not exist -- then | ||
13 | // a nil map will be returned along with error diagnostics. Callers may wish | ||
14 | // to disregard the returned diagnostics in this case and instead generate | ||
15 | // their own error message(s) with additional context. | ||
16 | // | ||
17 | // If the returned diagnostics has errors when a non-nil map is returned | ||
18 | // then the map may be incomplete but should be valid enough for careful | ||
19 | // static analysis. | ||
20 | // | ||
21 | // This method wraps LoadHCLFile, and so it inherits the syntax selection | ||
22 | // behaviors documented for that method. | ||
23 | func (p *Parser) LoadValuesFile(path string) (map[string]cty.Value, hcl.Diagnostics) { | ||
24 | body, diags := p.LoadHCLFile(path) | ||
25 | if body == nil { | ||
26 | return nil, diags | ||
27 | } | ||
28 | |||
29 | vals := make(map[string]cty.Value) | ||
30 | attrs, attrDiags := body.JustAttributes() | ||
31 | diags = append(diags, attrDiags...) | ||
32 | if attrs == nil { | ||
33 | return vals, diags | ||
34 | } | ||
35 | |||
36 | for name, attr := range attrs { | ||
37 | val, valDiags := attr.Expr.Value(nil) | ||
38 | diags = append(diags, valDiags...) | ||
39 | vals[name] = val | ||
40 | } | ||
41 | |||
42 | return vals, diags | ||
43 | } | ||