func Decode()

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
}