terraform-provider-gitea/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/diag/diagnostics.go
dependabot[bot] 910ccdb092
Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.26.1 to 2.27.0
Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.26.1 to 2.27.0.
- [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases)
- [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.26.1...v2.27.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 20:21:30 +00:00

85 lines
1.9 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package diag
import (
"context"
"github.com/hashicorp/terraform-plugin-go/internal/logging"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
)
// Diagnostics is a collection of Diagnostic.
type Diagnostics []*tfprotov6.Diagnostic
// ErrorCount returns the number of error severity diagnostics.
func (d Diagnostics) ErrorCount() int {
var result int
for _, diagnostic := range d {
if diagnostic == nil {
continue
}
if diagnostic.Severity != tfprotov6.DiagnosticSeverityError {
continue
}
result++
}
return result
}
// Log will log every diagnostic:
//
// - Error severity at ERROR level
// - Warning severity at WARN level
// - Invalid/Unknown severity at WARN level
func (d Diagnostics) Log(ctx context.Context) {
for _, diagnostic := range d {
if diagnostic == nil {
continue
}
diagnosticFields := map[string]interface{}{
logging.KeyDiagnosticDetail: diagnostic.Detail,
logging.KeyDiagnosticSeverity: diagnostic.Severity.String(),
logging.KeyDiagnosticSummary: diagnostic.Summary,
}
if diagnostic.Attribute != nil {
diagnosticFields[logging.KeyDiagnosticAttribute] = diagnostic.Attribute.String()
}
switch diagnostic.Severity {
case tfprotov6.DiagnosticSeverityError:
logging.ProtocolError(ctx, "Response contains error diagnostic", diagnosticFields)
case tfprotov6.DiagnosticSeverityWarning:
logging.ProtocolWarn(ctx, "Response contains warning diagnostic", diagnosticFields)
default:
logging.ProtocolWarn(ctx, "Response contains unknown diagnostic", diagnosticFields)
}
}
}
// WarningCount returns the number of warning severity diagnostics.
func (d Diagnostics) WarningCount() int {
var result int
for _, diagnostic := range d {
if diagnostic == nil {
continue
}
if diagnostic.Severity != tfprotov6.DiagnosticSeverityWarning {
continue
}
result++
}
return result
}