func()

in rules/terraform_module_provider_declaration.go [41:74]


func (r *TerraformModuleProviderDeclarationRule) CheckFile(runner tflint.Runner, file *hcl.File) error {
	body, ok := file.Body.(*hclsyntax.Body)
	if !ok {
		logger.Debug("skip terraform_module_provider_declaration since it's not hcl file")
		return nil
	}
	blocks := body.Blocks
	var err error
	for _, block := range blocks {
		switch block.Type {
		case "provider":
			isProviderErrorUsage := false
			if len(block.Body.Attributes) != 1 {
				isProviderErrorUsage = true
			} else if _, isAliasDeclared := block.Body.Attributes["alias"]; !isAliasDeclared {
				isProviderErrorUsage = true
			}
			if len(block.Body.Blocks) > 0 {
				isProviderErrorUsage = true
			}
			if isProviderErrorUsage {
				subErr := runner.EmitIssue(
					r,
					"Provider block in terraform module is expected to have and only have `alias` declared",
					block.DefRange(),
				)
				if subErr != nil {
					err = multierror.Append(err, subErr)
				}
			}
		}
	}
	return err
}