package presentation

import "github.com/open-policy-agent/opa/internal/presentation"

Package presentation prints results of an expression evaluation in json and tabular formats.

Index

Variables

var DefaultProfileSortOrder = []string{"total_time_ns", "num_eval", "num_redo", "file", "line"}

DefaultProfileSortOrder is the default ordering unless something is specified in the CLI

Functions

func Bindings

func Bindings(w io.Writer, r Output) error

Bindings prints the bindings from r to w.

func Discard

func Discard(w io.Writer, x interface{}) error

func JSON

func JSON(w io.Writer, x interface{}) error

JSON writes x to w with indentation.

func Pretty

func Pretty(w io.Writer, r Output) error

Pretty prints all of r to w in a human-readable format.

func PrettyWithOptions

func PrettyWithOptions(w io.Writer, r Output, opts PrettyOptions) error

PrettyWithOptions prints all of r to w in a human-readable format.

func Raw

func Raw(w io.Writer, r Output) error

Raw prints the values from r to w. Each result is written on a separate line, and the expressions are separated by spaces. If the values are strings, they are written directly rather than formatted as compact JSON strings. This output format makes OPA useful in a scripting context.

func Source

func Source(w io.Writer, r Output) error

Source prints partial evaluation results in r to w in a source file friendly format.

func Values

func Values(w io.Writer, r Output) error

Values prints the values from r to w.

Types

type DepAnalysisOutput

type DepAnalysisOutput struct {
	Base    []ast.Ref `json:"base,omitempty"`
	Virtual []ast.Ref `json:"virtual,omitempty"`
}

DepAnalysisOutput contains the result of dependency analysis to be presented.

func (DepAnalysisOutput) JSON

func (o DepAnalysisOutput) JSON(w io.Writer) error

JSON outputs o to w as JSON.

func (DepAnalysisOutput) Pretty

func (o DepAnalysisOutput) Pretty(w io.Writer) error

Pretty outputs o to w in a human-readable format.

type Output

type Output struct {
	Errors            OutputErrors                   `json:"errors,omitempty"`
	Result            rego.ResultSet                 `json:"result,omitempty"`
	Partial           *rego.PartialQueries           `json:"partial,omitempty"`
	Metrics           metrics.Metrics                `json:"metrics,omitempty"`
	AggregatedMetrics map[string]interface{}         `json:"aggregated_metrics,omitempty"`
	Explanation       []*topdown.Event               `json:"explanation,omitempty"`
	Profile           []profiler.ExprStats           `json:"profile,omitempty"`
	AggregatedProfile []profiler.ExprStatsAggregated `json:"aggregated_profile,omitempty"`
	Coverage          *cover.Report                  `json:"coverage,omitempty"`
	// contains filtered or unexported fields
}

Output contains the result of evaluation to be presented.

func (Output) WithLimit

func (e Output) WithLimit(n int) Output

WithLimit sets the output limit to set on stringified values.

type OutputError

type OutputError struct {
	Message  string        `json:"message"`
	Code     string        `json:"code,omitempty"`
	Location *ast.Location `json:"location,omitempty"`
	Details  interface{}   `json:"details,omitempty"`
	// contains filtered or unexported fields
}

OutputError provides a common structure for all OPA library errors so that the JSON output given by the presentation package is consistent and parsable.

func NewOutputErrors

func NewOutputErrors(err error) []OutputError

NewOutputErrors creates a new slice of OutputError's based on the type of error passed in. Known structured types will be translated as appropriate, while unknown errors are placed into a structured format with their string value.

func (OutputError) Error

func (j OutputError) Error() string

type OutputErrors

type OutputErrors []OutputError

OutputErrors is a list of errors encountered which are to presented.

func (OutputErrors) Error

func (e OutputErrors) Error() string

type PrettyOptions

type PrettyOptions struct {
	TraceOpts topdown.PrettyTraceOptions
}

Source Files

presentation.go

Version
v1.4.2 (latest)
Published
May 2, 2025
Platform
linux/amd64
Imports
19 packages
Last checked
6 hours ago

Tools for package owners.