github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/terraform/parser/option.go (about) 1 package parser 2 3 import ( 4 "io/fs" 5 6 "github.com/aquasecurity/defsec/pkg/scanners/options" 7 ) 8 9 type ConfigurableTerraformParser interface { 10 options.ConfigurableParser 11 SetTFVarsPaths(...string) 12 SetStopOnHCLError(bool) 13 SetWorkspaceName(string) 14 SetAllowDownloads(bool) 15 SetSkipCachedModules(bool) 16 SetConfigsFS(fsys fs.FS) 17 } 18 19 type Option func(p ConfigurableTerraformParser) 20 21 func OptionWithTFVarsPaths(paths ...string) options.ParserOption { 22 return func(p options.ConfigurableParser) { 23 if tf, ok := p.(ConfigurableTerraformParser); ok { 24 tf.SetTFVarsPaths(paths...) 25 } 26 } 27 } 28 29 func OptionStopOnHCLError(stop bool) options.ParserOption { 30 return func(p options.ConfigurableParser) { 31 if tf, ok := p.(ConfigurableTerraformParser); ok { 32 tf.SetStopOnHCLError(stop) 33 } 34 } 35 } 36 37 func OptionWithWorkspaceName(workspaceName string) options.ParserOption { 38 return func(p options.ConfigurableParser) { 39 if tf, ok := p.(ConfigurableTerraformParser); ok { 40 tf.SetWorkspaceName(workspaceName) 41 } 42 } 43 } 44 45 func OptionWithDownloads(allowed bool) options.ParserOption { 46 return func(p options.ConfigurableParser) { 47 if tf, ok := p.(ConfigurableTerraformParser); ok { 48 tf.SetAllowDownloads(allowed) 49 } 50 } 51 } 52 53 func OptionWithSkipCachedModules(b bool) options.ParserOption { 54 return func(p options.ConfigurableParser) { 55 if tf, ok := p.(ConfigurableTerraformParser); ok { 56 tf.SetSkipCachedModules(b) 57 } 58 } 59 } 60 61 func OptionWithConfigsFS(fsys fs.FS) options.ParserOption { 62 return func(s options.ConfigurableParser) { 63 if p, ok := s.(ConfigurableTerraformParser); ok { 64 p.SetConfigsFS(fsys) 65 } 66 } 67 }