Skip to content

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 Severity string

type Span

type Span struct {
    Start Position  `json:"start"         ub:"start"`
    End   *Position `json:"end,omitempty" ub:"end,omitempty"`
}