| // Copyright (c) The OpenTofu Authors | |
| // SPDX-License-Identifier: MPL-2.0 | |
| // Copyright (c) 2023 HashiCorp, Inc. | |
| // SPDX-License-Identifier: MPL-2.0 | |
| package method | |
| import ( | |
| "github.com/hashicorp/hcl/v2" | |
| "github.com/zclconf/go-cty/cty" | |
| ) | |
| // Descriptor contains the details on an encryption method and produces a configuration structure with default values. | |
| type Descriptor interface { | |
| // ID returns the unique identifier used when parsing HCL or JSON configs. | |
| ID() ID | |
| // DecodeConfig creates a new configuration struct. The Build() receiver on | |
| // this struct must be able to build a Method from the configuration. | |
| // | |
| // Common errors: | |
| // - Returning a struct without a pointer | |
| // - Returning a non-struct | |
| DecodeConfig(methodCtx EvalContext, body hcl.Body) (Config, hcl.Diagnostics) | |
| } | |
| type EvalContext struct { | |
| ValueForExpression func(expr hcl.Expression) (cty.Value, hcl.Diagnostics) | |
| } |