* feat: add country setting resource support with `unifi_setting_country` resource * linting
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package validators
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/filipowm/terraform-provider-unifi/internal/provider/base"
|
|
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
|
|
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
|
|
)
|
|
|
|
func StringLengthExactly(len int) validator.String {
|
|
return stringLengthExactlyValidator{len: len}
|
|
}
|
|
|
|
type stringLengthExactlyValidator struct {
|
|
len int
|
|
}
|
|
|
|
func (v stringLengthExactlyValidator) invalidUsageMessage() string {
|
|
return "length cannot be less than zero"
|
|
}
|
|
|
|
func (v stringLengthExactlyValidator) Description(_ context.Context) string {
|
|
return fmt.Sprintf("string length must be exactly %d", v.len)
|
|
}
|
|
|
|
func (v stringLengthExactlyValidator) MarkdownDescription(ctx context.Context) string {
|
|
return v.Description(ctx)
|
|
}
|
|
|
|
func (v stringLengthExactlyValidator) ValidateString(ctx context.Context, req validator.StringRequest, resp *validator.StringResponse) {
|
|
if v.len < 0 {
|
|
resp.Diagnostics.Append(
|
|
validatordiag.InvalidValidatorUsageDiagnostic(
|
|
req.Path,
|
|
"StringLengthExactly",
|
|
v.invalidUsageMessage(),
|
|
),
|
|
)
|
|
return
|
|
}
|
|
|
|
value := req.ConfigValue
|
|
if !base.IsDefined(value) {
|
|
return
|
|
}
|
|
val := value.ValueString()
|
|
if len(val) != v.len {
|
|
resp.Diagnostics.Append(
|
|
validatordiag.InvalidAttributeValueDiagnostic(
|
|
req.Path,
|
|
v.Description(ctx),
|
|
fmt.Sprintf("%s (length: %d)", val, len(val)),
|
|
),
|
|
)
|
|
}
|
|
}
|