Skip to content

Commit a22d338

Browse files
author
Ivan De Marino
committed
Relocating validatordiag package to helpers/validatordiag
1 parent f80bdba commit a22d338

File tree

14 files changed

+112
-69
lines changed

14 files changed

+112
-69
lines changed

float64validator/at_least.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator atLeastValidator) Validate(ctx context.Context, request tfsdk.Va
3434
}
3535

3636
if f < validator.min {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%f", f),

float64validator/at_most.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator atMostValidator) Validate(ctx context.Context, request tfsdk.Val
3434
}
3535

3636
if f > validator.max {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%f", f),

float64validator/between.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator betweenValidator) Validate(ctx context.Context, request tfsdk.Va
3434
}
3535

3636
if f < validator.min || f > validator.max {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%f", f),

helpers/validatordiag/diag.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package validatordiag
2+
3+
import (
4+
"unicode"
5+
"unicode/utf8"
6+
7+
"github.com/hashicorp/terraform-plugin-framework/diag"
8+
"github.com/hashicorp/terraform-plugin-go/tftypes"
9+
)
10+
11+
// InvalidValueDiagnostic returns an error Diagnostic to be used when an attribute has an invalid value.
12+
func InvalidValueDiagnostic(path *tftypes.AttributePath, description string, value string) diag.Diagnostic {
13+
return diag.NewAttributeErrorDiagnostic(
14+
path,
15+
"Invalid Attribute Value",
16+
capitalize(description)+", got: "+value,
17+
)
18+
}
19+
20+
// InvalidValueLengthDiagnostic returns an error Diagnostic to be used when an attribute's value has an invalid length.
21+
func InvalidValueLengthDiagnostic(path *tftypes.AttributePath, description string, value string) diag.Diagnostic {
22+
return diag.NewAttributeErrorDiagnostic(
23+
path,
24+
"Invalid Attribute Value Length",
25+
capitalize(description)+", got: "+value,
26+
)
27+
}
28+
29+
// InvalidValueMatchDiagnostic returns an error Diagnostic to be used when an attribute's value has an invalid match.
30+
func InvalidValueMatchDiagnostic(path *tftypes.AttributePath, description string, value string) diag.Diagnostic {
31+
return diag.NewAttributeErrorDiagnostic(
32+
path,
33+
"Invalid Attribute Value Match",
34+
capitalize(description)+", got: "+value,
35+
)
36+
}
37+
38+
// InvalidSchemaDiagnostic returns an error Diagnostic to be used when a schemavalidator of attributes is invalid.
39+
func InvalidSchemaDiagnostic(path *tftypes.AttributePath, description string) diag.Diagnostic {
40+
return diag.NewAttributeErrorDiagnostic(
41+
path,
42+
"Invalid Attribute Combination",
43+
capitalize(description),
44+
)
45+
}
46+
47+
// InvalidTypeDiagnostic returns an error Diagnostic to be used when an attribute has an invalid type.
48+
func InvalidTypeDiagnostic(path *tftypes.AttributePath, description string, value string) diag.Diagnostic {
49+
return diag.NewAttributeErrorDiagnostic(
50+
path,
51+
"Invalid Attribute Type",
52+
capitalize(description)+", got: "+value,
53+
)
54+
}
55+
56+
// ErrorsCount returns the amount of diag.Diagnostic in diag.Diagnostics that are diag.SeverityError.
57+
func ErrorsCount(diags diag.Diagnostics) int {
58+
count := 0
59+
60+
for _, d := range diags {
61+
if diag.SeverityError == d.Severity() {
62+
count++
63+
}
64+
}
65+
66+
return count
67+
}
68+
69+
// WarningsCount returns the amount of diag.Diagnostic in diag.Diagnostics that are diag.SeverityWarning.
70+
func WarningsCount(diags diag.Diagnostics) int {
71+
count := 0
72+
73+
for _, d := range diags {
74+
if diag.SeverityWarning == d.Severity() {
75+
count++
76+
}
77+
}
78+
79+
return count
80+
}
81+
82+
// capitalize will uppercase the first letter in a UTF-8 string.
83+
func capitalize(str string) string {
84+
if str == "" {
85+
return ""
86+
}
87+
88+
firstRune, size := utf8.DecodeRuneInString(str)
89+
90+
return string(unicode.ToUpper(firstRune)) + str[size:]
91+
}
File renamed without changes.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
// Package validatordiag provides diagnostics helpers for validator
2-
// implementations.
1+
// Package validatordiag provides diagnostics helpers for validator implementations.
32
package validatordiag

int64validator/at_least.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator atLeastValidator) Validate(ctx context.Context, request tfsdk.Va
3434
}
3535

3636
if i < validator.min {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", i),

int64validator/at_most.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator atMostValidator) Validate(ctx context.Context, request tfsdk.Val
3434
}
3535

3636
if i > validator.max {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", i),

int64validator/between.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator betweenValidator) Validate(ctx context.Context, request tfsdk.Va
3434
}
3535

3636
if i < validator.min || i > validator.max {
37-
response.Diagnostics.Append(validatordiag.AttributeValueDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", i),

stringvalidator/length_at_least.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator lengthAtLeastValidator) Validate(ctx context.Context, request tf
3434
}
3535

3636
if l := len(s); l < validator.minLength {
37-
response.Diagnostics.Append(validatordiag.AttributeValueLengthDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueLengthDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", l),

stringvalidator/length_at_most.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator lengthAtMostValidator) Validate(ctx context.Context, request tfs
3434
}
3535

3636
if l := len(s); l > validator.maxLength {
37-
response.Diagnostics.Append(validatordiag.AttributeValueLengthDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueLengthDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", l),

stringvalidator/length_between.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
7+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
88
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
99
)
1010

@@ -34,7 +34,7 @@ func (validator lengthBetweenValidator) Validate(ctx context.Context, request tf
3434
}
3535

3636
if l := len(s); l < validator.minLength || l > validator.maxLength {
37-
response.Diagnostics.Append(validatordiag.AttributeValueLengthDiagnostic(
37+
response.Diagnostics.Append(validatordiag.InvalidValueLengthDiagnostic(
3838
request.AttributePath,
3939
validator.Description(ctx),
4040
fmt.Sprintf("%d", l),

stringvalidator/regex_matches.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"fmt"
66
"regexp"
77

8-
"github.com/hashicorp/terraform-plugin-framework-validators/validatordiag"
8+
"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
99
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
1010
)
1111

@@ -39,7 +39,7 @@ func (validator regexMatchesValidator) Validate(ctx context.Context, request tfs
3939
}
4040

4141
if ok := validator.regexp.MatchString(s); !ok {
42-
response.Diagnostics.Append(validatordiag.AttributeValueMatchesDiagnostic(
42+
response.Diagnostics.Append(validatordiag.InvalidValueMatchDiagnostic(
4343
request.AttributePath,
4444
validator.Description(ctx),
4545
s,

validatordiag/diag.go

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)