58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package tfdiags
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/hcl/v2"
|
|
)
|
|
|
|
type Diagnostic interface {
|
|
Severity() Severity
|
|
Description() Description
|
|
Source() Source
|
|
|
|
// FromExpr returns the expression-related context for the diagnostic, if
|
|
// available. Returns nil if the diagnostic is not related to an
|
|
// expression evaluation.
|
|
FromExpr() *FromExpr
|
|
}
|
|
|
|
type Severity rune
|
|
|
|
//go:generate go run golang.org/x/tools/cmd/stringer -type=Severity
|
|
|
|
const (
|
|
Error Severity = 'E'
|
|
Warning Severity = 'W'
|
|
)
|
|
|
|
// ToHCL converts a Severity to the equivalent HCL diagnostic severity.
|
|
func (s Severity) ToHCL() hcl.DiagnosticSeverity {
|
|
switch s {
|
|
case Warning:
|
|
return hcl.DiagWarning
|
|
case Error:
|
|
return hcl.DiagError
|
|
default:
|
|
// The above should always be exhaustive for all of the valid
|
|
// Severity values in this package.
|
|
panic(fmt.Sprintf("unknown diagnostic severity %s", s))
|
|
}
|
|
}
|
|
|
|
type Description struct {
|
|
Address string
|
|
Summary string
|
|
Detail string
|
|
}
|
|
|
|
type Source struct {
|
|
Subject *SourceRange
|
|
Context *SourceRange
|
|
}
|
|
|
|
type FromExpr struct {
|
|
Expression hcl.Expression
|
|
EvalContext *hcl.EvalContext
|
|
}
|