internal/utils/planmodifiers/string_default.go (28 lines of code) (raw):
package planmodifiers
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
)
func StringUseDefaultIfUnknown(defaultValue string) stringDefault {
return stringDefault{defaultValue: defaultValue}
}
type stringDefault struct {
defaultValue string
}
func (bd stringDefault) PlanModifyString(ctx context.Context, req planmodifier.StringRequest, resp *planmodifier.StringResponse) {
// Do nothing if there is a known planned value.
if !req.PlanValue.IsUnknown() {
return
}
// Do nothing if there is an unknown configuration value, otherwise interpolation gets messed up.
if req.ConfigValue.IsUnknown() {
return
}
resp.PlanValue = basetypes.NewStringValue(bd.defaultValue)
}
func (bd stringDefault) Description(context.Context) string {
return fmt.Sprintf("Sets the value to [%s] if unknown", bd.defaultValue)
}
func (bd stringDefault) MarkdownDescription(ctx context.Context) string {
return bd.Description(ctx)
}