mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-14 12:22:51 -06:00
ed14340916
This was never supported, and the flag is thus confusing. Since the only supported format is "json" (the default), the flag is redundant now. However, I've kept it so if someone uses `opa exec --format=json` somewhere, their calls won't become invalid. If someone had been using `opa exec --format=pretty`, they will now see an error, but I think that's less confusing: pretty formatting is just not supported for 'opa exec'. Signed-off-by: Stephan Renatus <stephan@styra.com>
54 lines
2.4 KiB
Go
54 lines
2.4 KiB
Go
package exec
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
"time"
|
|
|
|
"github.com/open-policy-agent/opa/logging"
|
|
"github.com/open-policy-agent/opa/util"
|
|
)
|
|
|
|
type Params struct {
|
|
Paths []string // file paths to execute against
|
|
Output io.Writer // output stream to write normal output to
|
|
ConfigFile string // OPA configuration file path
|
|
ConfigOverrides []string // OPA configuration overrides (--set arguments)
|
|
ConfigOverrideFiles []string // OPA configuration overrides (--set-file arguments)
|
|
OutputFormat *util.EnumFlag // output format (default: pretty)
|
|
LogLevel *util.EnumFlag // log level for plugins
|
|
LogFormat *util.EnumFlag // log format for plugins
|
|
LogTimestampFormat string // log timestamp format for plugins
|
|
BundlePaths []string // explicit paths of bundles to inject into the configuration
|
|
Decision string // decision to evaluate (overrides default decision set by configuration)
|
|
Fail bool // exits with non-zero exit code on undefined policy decision or empty policy decision result or other errors
|
|
FailDefined bool // exits with non-zero exit code on 'not undefined policy decisiondefined' or 'not empty policy decision result' or other errors
|
|
FailNonEmpty bool // exits with non-zero exit code on non-empty set (array) results
|
|
StdIn bool // pull input from std-in, rather than input files
|
|
Timeout time.Duration // timeout to prevent infinite hangs. If set to 0, the command will never time out
|
|
V1Compatible bool // use OPA 1.0 compatibility mode
|
|
Logger logging.Logger // Logger override. If set to nil, the default logger is used.
|
|
}
|
|
|
|
func NewParams(w io.Writer) *Params {
|
|
return &Params{
|
|
Output: w,
|
|
OutputFormat: util.NewEnumFlag("json", []string{"json"}),
|
|
LogLevel: util.NewEnumFlag("error", []string{"debug", "info", "error"}),
|
|
LogFormat: util.NewEnumFlag("json", []string{"text", "json", "json-pretty"}),
|
|
}
|
|
}
|
|
|
|
func (p *Params) validateParams() error {
|
|
if p.Fail && p.FailDefined {
|
|
return errors.New("specify --fail or --fail-defined but not both")
|
|
}
|
|
if p.FailNonEmpty && p.Fail {
|
|
return errors.New("specify --fail-non-empty or --fail but not both")
|
|
}
|
|
if p.FailNonEmpty && p.FailDefined {
|
|
return errors.New("specify --fail-non-empty or --fail-defined but not both")
|
|
}
|
|
return nil
|
|
}
|