func()

in rules/terraform_heredoc_usage.go [44:77]


func (r *TerraformHeredocUsageRule) CheckFile(runner tflint.Runner, file *hcl.File) error {
	body, ok := file.Body.(*hclsyntax.Body)
	if !ok {
		logger.Debug("skip terraform_heredoc_usage since it's not hcl file")
		return nil
	}
	fileName := body.Range().Filename
	tokens, diags := hclsyntax.LexConfig(file.Bytes, fileName, hcl.InitialPos)
	if diags.HasErrors() {
		return diags
	}
	var err error
	var hereDocStartRange hcl.Range
	var heredoc string
	var inHeredoc bool
	for _, token := range tokens {
		switch token.Type {
		case hclsyntax.TokenOHeredoc:
			inHeredoc = true
			heredoc = ""
			hereDocStartRange = token.Range
		case hclsyntax.TokenCHeredoc:
			inHeredoc = false
			if subErr := r.checkHeredocIsJSONOrYAML(runner, heredoc, hereDocStartRange); subErr != nil {
				err = multierror.Append(err, subErr)
			}
		case hclsyntax.TokenStringLit:
			if inHeredoc {
				heredoc = fmt.Sprintf("%s%s", heredoc, string(token.Bytes))
			}
		}
	}
	return err
}