github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/terraform/parser/option.go (about)

     1  package parser
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/scanners/options"
     5  )
     6  
     7  type ConfigurableTerraformParser interface {
     8  	options.ConfigurableParser
     9  	SetTFVarsPaths(...string)
    10  	SetStopOnHCLError(bool)
    11  	SetWorkspaceName(string)
    12  	SetAllowDownloads(bool)
    13  }
    14  
    15  type Option func(p ConfigurableTerraformParser)
    16  
    17  func OptionWithTFVarsPaths(paths ...string) options.ParserOption {
    18  	return func(p options.ConfigurableParser) {
    19  		if tf, ok := p.(ConfigurableTerraformParser); ok {
    20  			tf.SetTFVarsPaths(paths...)
    21  		}
    22  	}
    23  }
    24  
    25  func OptionStopOnHCLError(stop bool) options.ParserOption {
    26  	return func(p options.ConfigurableParser) {
    27  		if tf, ok := p.(ConfigurableTerraformParser); ok {
    28  			tf.SetStopOnHCLError(stop)
    29  		}
    30  	}
    31  }
    32  
    33  func OptionWithWorkspaceName(workspaceName string) options.ParserOption {
    34  	return func(p options.ConfigurableParser) {
    35  		if tf, ok := p.(ConfigurableTerraformParser); ok {
    36  			tf.SetWorkspaceName(workspaceName)
    37  		}
    38  	}
    39  }
    40  
    41  func OptionWithDownloads(allowed bool) options.ParserOption {
    42  	return func(p options.ConfigurableParser) {
    43  		if tf, ok := p.(ConfigurableTerraformParser); ok {
    44  			tf.SetAllowDownloads(allowed)
    45  		}
    46  	}
    47  }