github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/flag/rego_flags.go (about) 1 package flag 2 3 // e.g. config yaml: 4 // 5 // rego: 6 // trace: true 7 // config-policy: "custom-policy/policy" 8 // policy-namespaces: "user" 9 var ( 10 SkipPolicyUpdateFlag = Flag{ 11 Name: "skip-policy-update", 12 ConfigName: "rego.skip-policy-update", 13 Default: false, 14 Usage: "skip fetching rego policy updates", 15 } 16 TraceFlag = Flag{ 17 Name: "trace", 18 ConfigName: "rego.trace", 19 Default: false, 20 Usage: "enable more verbose trace output for custom queries", 21 } 22 ConfigPolicyFlag = Flag{ 23 Name: "config-policy", 24 ConfigName: "rego.policy", 25 Default: []string{}, 26 Usage: "specify the paths to the Rego policy files or to the directories containing them, applying config files", 27 Aliases: []Alias{ 28 {Name: "policy"}, 29 }, 30 } 31 ConfigDataFlag = Flag{ 32 Name: "config-data", 33 ConfigName: "rego.data", 34 Default: []string{}, 35 Usage: "specify paths from which data for the Rego policies will be recursively loaded", 36 Aliases: []Alias{ 37 {Name: "data"}, 38 }, 39 } 40 PolicyNamespaceFlag = Flag{ 41 Name: "policy-namespaces", 42 ConfigName: "rego.namespaces", 43 Default: []string{}, 44 Usage: "Rego namespaces", 45 Aliases: []Alias{ 46 {Name: "namespaces"}, 47 }, 48 } 49 ) 50 51 // RegoFlagGroup composes common printer flag structs used for commands providing misconfinguration scanning. 52 type RegoFlagGroup struct { 53 SkipPolicyUpdate *Flag 54 Trace *Flag 55 PolicyPaths *Flag 56 DataPaths *Flag 57 PolicyNamespaces *Flag 58 } 59 60 type RegoOptions struct { 61 SkipPolicyUpdate bool 62 Trace bool 63 PolicyPaths []string 64 DataPaths []string 65 PolicyNamespaces []string 66 } 67 68 func NewRegoFlagGroup() *RegoFlagGroup { 69 return &RegoFlagGroup{ 70 SkipPolicyUpdate: &SkipPolicyUpdateFlag, 71 Trace: &TraceFlag, 72 PolicyPaths: &ConfigPolicyFlag, 73 DataPaths: &ConfigDataFlag, 74 PolicyNamespaces: &PolicyNamespaceFlag, 75 } 76 } 77 78 func (f *RegoFlagGroup) Name() string { 79 return "Rego" 80 } 81 82 func (f *RegoFlagGroup) Flags() []*Flag { 83 return []*Flag{ 84 f.SkipPolicyUpdate, 85 f.Trace, 86 f.PolicyPaths, 87 f.DataPaths, 88 f.PolicyNamespaces, 89 } 90 } 91 92 func (f *RegoFlagGroup) ToOptions() (RegoOptions, error) { 93 return RegoOptions{ 94 SkipPolicyUpdate: getBool(f.SkipPolicyUpdate), 95 Trace: getBool(f.Trace), 96 PolicyPaths: getStringSlice(f.PolicyPaths), 97 DataPaths: getStringSlice(f.DataPaths), 98 PolicyNamespaces: getStringSlice(f.PolicyNamespaces), 99 }, nil 100 }