-
Notifications
You must be signed in to change notification settings - Fork 10
/
provider_meta.go
37 lines (30 loc) · 977 Bytes
/
provider_meta.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package configs
import "github.com/hashicorp/hcl/v2"
// ProviderMeta represents a "provider_meta" block inside a "terraform" block
// in a module or file.
type ProviderMeta struct {
Provider string
Config hcl.Body
ProviderRange hcl.Range
DeclRange hcl.Range
}
func decodeProviderMetaBlock(block *hcl.Block) (*ProviderMeta, hcl.Diagnostics) {
// provider_meta must be a static map. We can verify this by attempting to
// evaluate the values.
attrs, diags := block.Body.JustAttributes()
if diags.HasErrors() {
return nil, diags
}
for _, attr := range attrs {
_, d := attr.Expr.Value(nil)
diags = append(diags, d...)
}
// verify that the local name is already localized or produce an error.
diags = append(diags, checkProviderNameNormalized(block.Labels[0], block.DefRange)...)
return &ProviderMeta{
Provider: block.Labels[0],
ProviderRange: block.LabelRanges[0],
Config: block.Body,
DeclRange: block.DefRange,
}, diags
}