Skip to content

package sourcecheck

import "github.com/cloudboss/unobin/pkg/sourcecheck"

Functions

func CheckLibraryFile

func CheckLibraryFile(file *syntax.LibraryFile, opts Options) error

CheckLibraryFile checks every exported composite body in file.

func CheckUBLibrary

func CheckUBLibrary(source *resolve.Source, opts Options) error

CheckUBLibrary checks every exported composite body in source.

Types

type ImportAnalysis

type ImportAnalysis struct {
    Top        []resolve.Resolution
    Libraries  map[string]*runtime.Library
    GoImports  map[string]string
    GoModules  map[string]string
    UBImports  map[string]string
    UBPackages map[string][]byte
}

ImportAnalysis is the resolved import data shared by source checks, compile, and graph printing.

func AnalyzeImports

func AnalyzeImports(
    refs map[string]resolve.ImportRef,
    opts ImportAnalysisOptions,
) (*ImportAnalysis, error)

AnalyzeImports resolves refs once and builds the data each caller needs.

type ImportAnalysisOptions

type ImportAnalysisOptions struct {
    ProjectDir              string
    Source                  *resolve.Source
    Resolver                resolve.Resolver
    Versions                map[string]string
    SchemaCache             *SchemaCache
    WarnOut                 io.Writer
    Mode                    Mode
    StackName               string
    GeneratePackages        bool
    ValidateCompositeBodies bool
}

ImportAnalysisOptions configures AnalyzeImports.

type Mode

type Mode int

Mode controls whether remote imports may be fetched.

type Options

type Options struct {
    ProjectDir  string
    Source      *resolve.Source
    Resolver    resolve.Resolver
    Versions    map[string]string
    SchemaCache *SchemaCache
    WarnOut     io.Writer
    Mode        Mode
}

Options configures source checks.

type Result

type Result struct {
    Libraries map[string]*runtime.Library
    DAG       *runtime.DAG
}

Result is the source-check result for a factory or composite body.

func CheckFactoryBody

func CheckFactoryBody(body syntax.FactoryBody, opts Options) (*Result, error)

CheckFactoryBody resolves imports and runs compile-time checks for body.

type SchemaCache

type SchemaCache struct {
    // contains filtered or unexported fields
}

SchemaCache memoizes Go library schema reads by source path.

func NewSchemaCache

func NewSchemaCache(extra ...goschema.ModuleRoot) *SchemaCache

NewSchemaCache returns a cache that reads Go source with extra module roots.

func NewSchemaCacheWithReader

func NewSchemaCacheWithReader(
    read func(sourcePath string) (*runtime.LibrarySchema, []string, error),
) *SchemaCache

NewSchemaCacheWithReader returns a cache that reads Go schemas through read.

func (*SchemaCache) Read

func (c *SchemaCache) Read(sourcePath string) (*runtime.LibrarySchema, []string, error)

Read returns the schema and warnings for sourcePath, reading it once.