in block.go [56:85]
func Decode(b Block) error {
hb := b.HclBlock()
if err := verifyDependsOn(b); err != nil {
return err
}
zeroBlock(b)
evalContext := b.EvalContext()
if customDecode, ok := b.(CustomDecode); ok {
return customDecode.Decode(hb, evalContext)
}
if baseDecode, ok := b.(BaseDecode); ok {
err := baseDecode.BaseDecode(hb, evalContext)
if err != nil {
return err
}
}
expandedHb, err := hb.ExpandDynamicBlocks(evalContext)
if err != nil {
return err
}
diag := gohcl.DecodeBody(cleanBodyForDecode(expandedHb.Body), evalContext, b)
if diag.HasErrors() {
return diag
}
// we need set defaults again, since gohcl.DecodeBody might erase default value set on those attribute has null values.
defaults.SetDefaults(b)
return nil
}