package goschema¶
Package goschema reads a Go library's source to learn the output schema of each registered resource, data source, and action. The dev CLI feeds the result into the reference checker so trailing field names in references like `resource.app.id` can be validated at compile time.
Functions¶
func Read¶
Read parses the Go library rooted at dir and returns its schema plus any warnings: registered types whose sibling Output struct could not be located, and constraints whose pieces could not be extracted from source. Returns an error when no `Library()` function is found in dir's root package, or when the directory cannot be read. extra lists further module roots the walker may read source from when a referenced type lives outside the library's own module.
Types¶
type Analysis¶
Analysis is the complete Go library source analysis.
func Analyze¶
Analyze reads a Go library's source and returns its schema facts and locations.
type GoLocation¶
GoLocation points at a byte in a Go source file.
type ModuleRoot¶
ModuleRoot names a module's source on disk: Path is the module's import path and Dir is the directory holding its source. The walker resolves a selector into any root whose Path contains the selector's import path.
type SourceIndex¶
type SourceIndex struct {
LibraryFunc GoLocation
Registrations map[string]map[string]GoLocation
InputTypes map[string]map[string]GoLocation
OutputTypes map[string]map[string]GoLocation
InputFields map[string]map[string]map[string]GoLocation
OutputFields map[string]map[string]map[string]GoLocation
ConfigType GoLocation
ConfigFields map[string]GoLocation
Functions map[string]GoLocation
}
SourceIndex records source locations for a Go library schema.
func ReadWithIndex¶
func ReadWithIndex(dir string, extra ...ModuleRoot) (
schema *runtime.LibrarySchema,
index *SourceIndex,
warnings []string,
err error,
)
ReadWithIndex reads a Go library schema and the matching source index.
type SourceIndexCache¶
SourceIndexCache caches schema and source-index reads by directory.
func NewSourceIndexCache¶
NewSourceIndexCache returns an empty source index cache.
func (*SourceIndexCache) Invalidate¶
Invalidate removes one directory from the cache.
func (*SourceIndexCache) Read¶
func (c *SourceIndexCache) Read(dir string) (
schema *runtime.LibrarySchema,
index *SourceIndex,
warnings []string,
err error,
)
Read reads a schema and source index, using the cache when present.