rules/terraform_versions_file.go (46 lines of code) (raw):

package rules import ( "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclsyntax" "github.com/terraform-linters/tflint-plugin-sdk/logger" "github.com/terraform-linters/tflint-plugin-sdk/tflint" ) var _ tflint.Rule = &TerraformVersionsFileRule{} // TerraformVersionsFileRule checks whether `versions.tf` only has 1 `terraform` block type TerraformVersionsFileRule struct { tflint.DefaultRule } // NewTerraformVersionsFileRule returns a new rule func NewTerraformVersionsFileRule() *TerraformVersionsFileRule { return &TerraformVersionsFileRule{} } func (r *TerraformVersionsFileRule) Enabled() bool { return false } func (r *TerraformVersionsFileRule) Severity() tflint.Severity { return tflint.NOTICE } func (r *TerraformVersionsFileRule) Check(runner tflint.Runner) error { return ForFiles(runner, r.CheckFile) } // Name returns the rule name func (r *TerraformVersionsFileRule) Name() string { return "terraform_versions_file" } func (r *TerraformVersionsFileRule) CheckFile(runner tflint.Runner, file *hcl.File) error { body, ok := file.Body.(*hclsyntax.Body) if !ok { logger.Debug("skip terraform_versions_file check since it's not hcl file") return nil } filename := body.Range().Filename if filename != "versions.tf" { return nil } blocks := body.Blocks if len(blocks) != 1 || blocks[0].Type != "terraform" { return runner.EmitIssue( r, "`versions.tf` should have and only have 1 `terraform` block", hcl.Range{}, ) } return nil }