mirror of
https://github.com/hashicorp/packer.git
synced 2026-02-19 02:28:50 -05:00
21 lines
640 B
Go
21 lines
640 B
Go
// Copyright IBM Corp. 2013, 2025
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package hcl2template
|
|
|
|
import (
|
|
"github.com/hashicorp/hcl/v2"
|
|
"github.com/hashicorp/hcl/v2/hcldec"
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
// Decodable structs are structs that can tell their hcl2 ObjectSpec; this
|
|
// config spec will be passed to hcldec.Decode and the result will be a
|
|
// cty.Value. This Value can then be applied on the said struct.
|
|
type Decodable interface {
|
|
ConfigSpec() hcldec.ObjectSpec
|
|
}
|
|
|
|
func decodeHCL2Spec(body hcl.Body, ectx *hcl.EvalContext, dec Decodable) (cty.Value, hcl.Diagnostics) {
|
|
return hcldec.Decode(body, dec.ConfigSpec(), ectx)
|
|
}
|