Documentation ¶
Index ¶
- Constants
- func EvaluateBoolExpression(expr string) (bool, error)
- func InitEmpty(ctx context.Context, repo drivers.RepoStore, instanceID, title string) error
- func IsInit(ctx context.Context, repo drivers.RepoStore, instanceID string) bool
- func ResolveTemplate(tmpl string, data TemplateData) (string, error)
- type Connector
- type ConnectorDef
- type Diff
- type Node
- type Parser
- type Resource
- type ResourceKind
- type ResourceName
- type RillYAML
- type RillYAMLDefaults
- type TemplateData
- type TemplateMetadata
- type TemplateResource
- type VariableDef
Constants ¶
const Version = "rillv1"
Version identifier for this compiler
Variables ¶
This section is empty.
Functions ¶
func EvaluateBoolExpression ¶ added in v0.33.0
func ResolveTemplate ¶
func ResolveTemplate(tmpl string, data TemplateData) (string, error)
ResolveTemplate resolves a template to a string using the given data.
Types ¶
type Connector ¶
type Connector struct { Driver string Name string Spec drivers.Spec Resources []*Resource AnonymousAccess bool }
Connector contains metadata about a connector used in a Rill project
type ConnectorDef ¶
ConnectorDef is a subtype of RillYAML, defining connectors required by the project
type Diff ¶
type Diff struct { Reloaded bool Skipped bool Added []ResourceName Modified []ResourceName ModifiedDotEnv bool Deleted []ResourceName }
Diff shows changes to Parser.Resources following an incremental reparse.
type Node ¶
type Node struct { Kind ResourceKind Name string Refs []ResourceName Paths []string YAML *yaml.Node YAMLRaw string YAMLPath string Connector string ConnectorInferred bool SQL string SQLPath string SQLAnnotations map[string]any SQLUsesTemplating bool }
Node represents one path stem in the project. It contains data derived from a YAML and/or SQL file (e.g. "/path/to/file.yaml" for "/path/to/file.sql").
type Parser ¶
type Parser struct { // Options Repo drivers.RepoStore InstanceID string DefaultConnector string DuckDBConnectors []string // Output RillYAML *RillYAML DotEnv map[string]string Resources map[ResourceName]*Resource Errors []*runtimev1.ParseError // contains filtered or unexported fields }
Parser parses a Rill project directory into a set of resources. After the initial parse, the parser can be used to incrementally reparse a subset of files. Parser is not concurrency safe.
func Parse ¶
func Parse(ctx context.Context, repo drivers.RepoStore, instanceID, defaultConnector string, duckDBConnectors []string) (*Parser, error)
Parse creates a new parser and parses the entire project.
Note on SQL parsing: For DuckDB SQL specifically, the parser can use a SQL parser to extract refs and annotations (instead of relying on templating or YAML). To enable SQL parsing for a connector, pass it in duckDBConnectors. If DuckDB SQL parsing should be used on files where no connector is specified, put the defaultConnector in duckDBConnectors.
func (*Parser) AnalyzeConnectors ¶
AnalyzeConnectors extracts connector metadata from a Rill project
func (*Parser) Reparse ¶
Reparse re-parses the indicated file paths, updating the Parser's state. If rill.yaml has previously errored, or if rill.yaml is included in paths, it will reload the entire project. If a previous call to Reparse has returned an error, the Parser may not be accessed or called again.
type Resource ¶
type Resource struct { // Metadata Name ResourceName Paths []string Refs []ResourceName // Derived from rawRefs after parsing (can't contain ResourceKindUnspecified). Always sorted. // Only one of these will be non-nil SourceSpec *runtimev1.SourceSpec ModelSpec *runtimev1.ModelSpec MetricsViewSpec *runtimev1.MetricsViewSpec MigrationSpec *runtimev1.MigrationSpec ReportSpec *runtimev1.ReportSpec // contains filtered or unexported fields }
Resource parsed from code files. One file may output multiple resources and multiple files may contribute config to one resource.
type ResourceKind ¶
type ResourceKind int
ResourceKind identifies a resource type supported by the parser
const ( ResourceKindUnspecified ResourceKind = iota ResourceKindSource ResourceKindModel ResourceKindMetricsView ResourceKindMigration ResourceKindReport )
func ParseResourceKind ¶
func ParseResourceKind(kind string) (ResourceKind, error)
ParseResourceKind maps a string to a ResourceKind. Note: The empty string is considered a valid kind (unspecified).
func (ResourceKind) String ¶
func (k ResourceKind) String() string
type ResourceName ¶
type ResourceName struct { Kind ResourceKind Name string }
ResourceName is a unique identifier for a resource
func (ResourceName) Normalized ¶
func (n ResourceName) Normalized() ResourceName
func (ResourceName) String ¶
func (n ResourceName) String() string
type RillYAML ¶
type RillYAML struct { Title string Description string Connectors []*ConnectorDef Variables []*VariableDef Defaults RillYAMLDefaults }
RillYAML is the parsed contents of rill.yaml
type RillYAMLDefaults ¶ added in v0.35.2
type RillYAMLDefaults struct { Sources yaml.Node Models yaml.Node MetricsViews yaml.Node Migrations yaml.Node }
RillYAMLDefaults contains project-wide default YAML properties for different resources
type TemplateData ¶
type TemplateData struct { User map[string]any Variables map[string]string ExtraProps map[string]any Self TemplateResource Resolve func(ref ResourceName) (string, error) Lookup func(name ResourceName) (TemplateResource, error) }
TemplateData contains data for resolving a template.
type TemplateMetadata ¶
type TemplateMetadata struct { Refs []ResourceName Config map[string]any UsesTemplating bool ResolvedWithPlaceholders string }
TemplateMetadata contains metadata extracted from a template.
func AnalyzeTemplate ¶
func AnalyzeTemplate(tmpl string) (*TemplateMetadata, error)
AnalyzeTemplate parses a template and extracts metadata.
type TemplateResource ¶
type TemplateResource struct { Meta *runtimev1.ResourceMeta Spec any State any }
TemplateResource contains data for a resource for injection into a template.
type VariableDef ¶
VariableDef is a subtype of RillYAML, defining defaults for project variables