package diagnostic
import "github.com/cloudboss/unobin/pkg/diagnostic"
Functions
func Context
func Context(message string, err error) error
func Report
func Report(r Reporter, d Diagnostic)
func WithDiagnostics
func WithDiagnostics(err error, diagnostics ...Diagnostic) error
func WriteText
func WriteText(out io.Writer, d Diagnostic) error
Types
type Collector
type Collector struct {
// contains filtered or unexported fields
}
func (*Collector) Diagnostics
func (c *Collector) Diagnostics() []Diagnostic
func (*Collector) HasErrors
func (c *Collector) HasErrors() bool
func (*Collector) Report
func (c *Collector) Report(d Diagnostic)
type ConvertOptions
type ConvertOptions struct {
DefaultCode string
Path func(string) string
}
type Diagnostic
type Diagnostic struct {
Code string `json:"code" ub:"code"`
Severity Severity `json:"severity" ub:"severity"`
Message string `json:"message" ub:"message"`
Hint string `json:"hint,omitempty" ub:"hint,omitempty"`
Path string `json:"path,omitempty" ub:"path,omitempty"`
Span *Span `json:"span,omitempty" ub:"span,omitempty"`
LibraryCompatibility *LibraryCompatibilityDetails `json:"library-compatibility,omitempty" ub:"library-compatibility,omitempty"`
}
func FromError
func FromError(err error, opts ConvertOptions) []Diagnostic
func Merge
func Merge(groups ...[]Diagnostic) []Diagnostic
func Normalize
func Normalize(ds []Diagnostic) []Diagnostic
type LibraryCompatibilityDetails
type LibraryCompatibilityDetails struct {
Dependency string `json:"dependency,omitempty" ub:"dependency,omitempty"`
Package string `json:"package,omitempty" ub:"package,omitempty"`
ModulePath string `json:"module-path,omitempty" ub:"module-path,omitempty"`
Version string `json:"version,omitempty" ub:"version,omitempty"`
Commit string `json:"commit,omitempty" ub:"commit,omitempty"`
ActualVersion string `json:"actual-version,omitempty" ub:"actual-version,omitempty"`
ActualRequiredAPI string `json:"actual-required-api,omitempty" ub:"actual-required-api,omitempty"`
CandidateVersion string `json:"candidate-version,omitempty" ub:"candidate-version,omitempty"`
Query string `json:"query,omitempty" ub:"query,omitempty"`
Floor string `json:"floor,omitempty" ub:"floor,omitempty"`
RequiredAPI string `json:"required-api,omitempty" ub:"required-api,omitempty"`
ImplementedAPIs []string `json:"implemented-apis,omitempty" ub:"implemented-apis,omitempty"`
UnobinVersion string `json:"unobin-version,omitempty" ub:"unobin-version,omitempty"`
SuggestedUnobinVersion string `json:"suggested-unobin-version,omitempty" ub:"suggested-unobin-version,omitempty"`
RequiredCoreVersion string `json:"required-core-version,omitempty" ub:"required-core-version,omitempty"`
MinimumGoVersion string `json:"minimum-go-version,omitempty" ub:"minimum-go-version,omitempty"`
Replacement string `json:"replacement,omitempty" ub:"replacement,omitempty"`
ActualReplacement string `json:"actual-replacement,omitempty" ub:"actual-replacement,omitempty"`
RequirementChain []LibraryRequirementStep `json:"requirement-chain,omitempty" ub:"requirement-chain,omitempty"`
}
type LibraryRequirementStep
type LibraryRequirementStep struct {
Dependency string `json:"dependency" ub:"dependency"`
Version string `json:"version,omitempty" ub:"version,omitempty"`
Requires string `json:"requires" ub:"requires"`
MinimumVersion string `json:"minimum-version" ub:"minimum-version"`
}
type PathMapper
type PathMapper struct {
WorkingDir string
ProjectDir string
Mappings []PathMapping
HiddenRoots []string
}
func (PathMapper) Display
func (m PathMapper) Display(path string) string
func (PathMapper) ReplaceKnownPrefixes
func (m PathMapper) ReplaceKnownPrefixes(message string) string
type PathMapping
type PathMapping struct {
AbsoluteRoot string
DisplayRoot string
}
type Position
type Position struct {
Line int `json:"line" ub:"line"`
Column int `json:"column" ub:"column"`
Offset int `json:"offset" ub:"offset"`
}
type Reporter
type Reporter interface {
Report(Diagnostic)
}
type Severity
type Span
type Span struct {
Start Position `json:"start" ub:"start"`
End *Position `json:"end,omitempty" ub:"end,omitempty"`
}