mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-18 06:21:35 -06:00
ca783539f8
Sometimes compiling large policies with many errors causes more output errors than is easily sorted through. The compiler has been updated to cancel after a configurable number of errors (default no limit), and the server, repl and check command support options for setting that limit.
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
// Copyright 2016 The OPA Authors. All rights reserved.
|
|
// Use of this source code is governed by an Apache2
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package repl_test
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/open-policy-agent/opa/repl"
|
|
"github.com/open-policy-agent/opa/storage/inmem"
|
|
)
|
|
|
|
func ExampleREPL_OneShot() {
|
|
// Initialize context for the example. Normally the caller would obtain the
|
|
// context from an input parameter or instantiate their own.
|
|
ctx := context.Background()
|
|
|
|
// Instantiate the policy engine's storage layer.
|
|
store := inmem.New()
|
|
|
|
// Create a buffer that will receive REPL output.
|
|
var buf bytes.Buffer
|
|
|
|
// Create a new REPL.
|
|
repl := repl.New(store, "", &buf, "json", 0, "")
|
|
|
|
// Define a rule inside the REPL.
|
|
repl.OneShot(ctx, "p { a = [1, 2, 3, 4]; a[_] > 3 }")
|
|
|
|
// Query the rule defined above.
|
|
repl.OneShot(ctx, "p")
|
|
|
|
// Inspect the output. Defining rules does not produce output so we only expect
|
|
// output from the second line of input.
|
|
fmt.Println(buf.String())
|
|
|
|
// Output:
|
|
// true
|
|
}
|