diff --git a/aws/ruleset.go b/aws/ruleset.go index 96a6f4dd..e9a0e968 100644 --- a/aws/ruleset.go +++ b/aws/ruleset.go @@ -30,12 +30,28 @@ func (r *RuleSet) RuleNames() []string { func (r *RuleSet) ApplyConfig(config *tflint.Config) error { r.ApplyCommonConfig(config) + // Apply "plugin" block config cfg := Config{} diags := gohcl.DecodeBody(config.Body, nil, &cfg) if diags.HasErrors() { return diags } r.config = &cfg + + // Apply config for API rules + for _, rule := range r.APIRules { + enabled := rule.Enabled() + if cfg := config.Rules[rule.Name()]; cfg != nil { + enabled = cfg.Enabled + } else if config.DisabledByDefault { + enabled = false + } + + if cfg.DeepCheck && enabled { + r.EnabledRules = append(r.EnabledRules, rule) + } + } + return nil } @@ -46,16 +62,7 @@ func (r *RuleSet) Check(rr tflint.Runner) error { return err } - for _, rule := range r.Rules { - if err := rule.Check(runner); err != nil { - return fmt.Errorf("Failed to check `%s` rule: %s", rule.Name(), err) - } - } - if !r.config.DeepCheck { - return nil - } - - for _, rule := range r.APIRules { + for _, rule := range r.EnabledRules { if err := rule.Check(runner); err != nil { return fmt.Errorf("Failed to check `%s` rule: %s", rule.Name(), err) } diff --git a/go.mod b/go.mod index 636bd91b..e15d780a 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/onsi/ginkgo v1.14.2 // indirect github.com/onsi/gomega v1.10.4 // indirect github.com/serenize/snaker v0.0.0-20201027110005-a7ad2135616e - github.com/terraform-linters/tflint-plugin-sdk v0.8.0 + github.com/terraform-linters/tflint-plugin-sdk v0.8.1 github.com/terraform-providers/terraform-provider-aws v1.60.1-0.20210128214539-ac3363c699ef github.com/zclconf/go-cty v1.7.1 ) diff --git a/go.sum b/go.sum index af58b423..9d0adb2b 100644 --- a/go.sum +++ b/go.sum @@ -331,8 +331,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/terraform-linters/tflint-plugin-sdk v0.8.0 h1:+9LzYNTg+s+Lf9riNAa+0AaEdgaroD46ZmJwbAXzkFY= -github.com/terraform-linters/tflint-plugin-sdk v0.8.0/go.mod h1:A/6/RIqmPGmLWnI1JZef2Tyzw7/MFTl6t6G0BH9qALA= +github.com/terraform-linters/tflint-plugin-sdk v0.8.1 h1:KklKztWgRzvZLSi77GFU2y/jaA/e+OUWEV3bdouzPWw= +github.com/terraform-linters/tflint-plugin-sdk v0.8.1/go.mod h1:A/6/RIqmPGmLWnI1JZef2Tyzw7/MFTl6t6G0BH9qALA= github.com/terraform-providers/terraform-provider-aws v1.60.1-0.20210128214539-ac3363c699ef h1:+UFdPdf7zyrxH6XVRs7FJpAc2ajrDx1OKWY7BBrQRds= github.com/terraform-providers/terraform-provider-aws v1.60.1-0.20210128214539-ac3363c699ef/go.mod h1:2FJRHL/0yjp+iYXWoW2v4U80Zkz+mGHsHOB/Jdbw7AI= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=