v0.64.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2024 License: Apache-2.0 Imports: 24 Imported by: 42



Package compile implements bundles compilation and linking.



View Source
const (
	// TargetRego is the default target. The source rego is copied (potentially
	// rewritten for optimization purpsoes) into the bundle. The target supports
	// base documents.
	TargetRego = "rego"

	// TargetWasm is an alternative target that compiles the policy into a wasm
	// module instead of Rego. The target supports base documents.
	TargetWasm = "wasm"

	// TargetPlan is an altertive target that compiles the policy into an
	// imperative query plan that can be further transpiled or interpreted.
	TargetPlan = "plan"


Targets contains the list of targets supported by the compiler.


This section is empty.


type Compiler

type Compiler struct {
	// contains filtered or unexported fields

Compiler implements bundle compilation and linking.

func New

func New() *Compiler

New returns a new compiler instance that can be invoked.

func (*Compiler) Build

func (c *Compiler) Build(ctx context.Context) error

Build compiles and links the input files and outputs a bundle to the writer.

func (*Compiler) Bundle added in v0.25.0

func (c *Compiler) Bundle() *bundle.Bundle

Bundle returns the compiled bundle. This function can be called to retrieve the output of the compiler (as an alternative to having the bundle written to a stream.)

func (*Compiler) WithAsBundle

func (c *Compiler) WithAsBundle(enabled bool) *Compiler

WithAsBundle sets file loading mode on the compiler.

func (*Compiler) WithBundle added in v0.25.0

func (c *Compiler) WithBundle(b *bundle.Bundle) *Compiler

WithBundle sets the input bundle to compile. This should be used as an alternative to reading from paths. This function overrides any file loading options.

func (*Compiler) WithBundleSigningConfig added in v0.22.0

func (c *Compiler) WithBundleSigningConfig(config *bundle.SigningConfig) *Compiler

WithBundleSigningConfig sets the key configuration to use to generate a signed bundle

func (*Compiler) WithBundleVerificationConfig added in v0.22.0

func (c *Compiler) WithBundleVerificationConfig(config *bundle.VerificationConfig) *Compiler

WithBundleVerificationConfig sets the key configuration to use to verify a signed bundle

func (*Compiler) WithBundleVerificationKeyID added in v0.22.0

func (c *Compiler) WithBundleVerificationKeyID(keyID string) *Compiler

WithBundleVerificationKeyID sets the key to use to verify a signed bundle. If provided, the "keyid" claim in the bundle signature, will be set to this value

func (*Compiler) WithCapabilities added in v0.23.0

func (c *Compiler) WithCapabilities(capabilities *ast.Capabilities) *Compiler

WithCapabilities sets the capabilities to use while checking policies.

func (*Compiler) WithDebug added in v0.27.0

func (c *Compiler) WithDebug(sink io.Writer) *Compiler

WithDebug sets the output stream to write debug info to.

func (*Compiler) WithEnablePrintStatements added in v0.43.0

func (c *Compiler) WithEnablePrintStatements(yes bool) *Compiler

WithEnablePrintStatements enables print statements inside of modules compiled by the compiler. If print statements are not enabled, calls to print() are erased at compile-time.

func (*Compiler) WithEntrypoints

func (c *Compiler) WithEntrypoints(e ...string) *Compiler

WithEntrypoints sets the policy entrypoints on the compiler. Entrypoints tell the compiler what rules to expect and where optimizations can be targeted. The wasm target requires at least one entrypoint as does optimization.

func (*Compiler) WithFS added in v0.52.0

func (c *Compiler) WithFS(fsys fs.FS) *Compiler

WithFS sets the file system to use when loading paths

func (*Compiler) WithFilter

func (c *Compiler) WithFilter(filter loader.Filter) *Compiler

WithFilter sets the loader filter to use when reading non-bundle input files.

func (*Compiler) WithMetadata added in v0.37.0

func (c *Compiler) WithMetadata(metadata *map[string]interface{}) *Compiler

WithMetadata sets the additional data to be included in .manifest

func (*Compiler) WithOptimizationLevel

func (c *Compiler) WithOptimizationLevel(n int) *Compiler

WithOptimizationLevel sets the optimization level on the compiler. By default optimizations are disabled. Higher levels apply more aggressive optimizations but can take longer.

func (*Compiler) WithOutput

func (c *Compiler) WithOutput(w io.Writer) *Compiler

WithOutput sets the output stream to write the bundle to.

func (*Compiler) WithPartialNamespace added in v0.54.0

func (c *Compiler) WithPartialNamespace(ns string) *Compiler

WithPartialNamespace sets the namespace to use for partial evaluation results

func (*Compiler) WithPaths

func (c *Compiler) WithPaths(p ...string) *Compiler

WithPaths adds input filepaths to read policy and data from.

func (*Compiler) WithPruneUnused added in v0.44.0

func (c *Compiler) WithPruneUnused(enabled bool) *Compiler

WithPruneUnused will make rules be ignored that are defined on the same package as the entrypoint, but that are not in the entrypoint set.

Notably this includes functions (they can't be entrypoints) and causes the built bundle to no longer be semantically equivalent to the bundle built without wasm.

This affects the 'wasm' and 'plan' targets only. It has no effect on building 'rego' bundles, i.e., "ordinary bundles".

func (*Compiler) WithRegoAnnotationEntrypoints added in v0.46.0

func (c *Compiler) WithRegoAnnotationEntrypoints(enabled bool) *Compiler

WithRegoAnnotationEntrypoints allows the compiler to late-bind entrypoints, based on Rego entrypoint annotations. The rules tagged with entrypoint annotations are added to the global list of entrypoints before optimizations/target compilation.

func (*Compiler) WithRegoVersion added in v0.60.0

func (c *Compiler) WithRegoVersion(v ast.RegoVersion) *Compiler

func (*Compiler) WithRevision

func (c *Compiler) WithRevision(r string) *Compiler

WithRevision sets the revision to include in the output bundle manifest.

func (*Compiler) WithRoots added in v0.55.0

func (c *Compiler) WithRoots(r ...string) *Compiler

WithRoots sets the roots to include in the output bundle manifest.

func (*Compiler) WithTarget

func (c *Compiler) WithTarget(t string) *Compiler

WithTarget sets the output target type to use.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL