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
}