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  }