Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package terragrunt for openSUSE:Factory 
checked in at 2022-12-17 20:36:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/terragrunt (Old)
 and      /work/SRC/openSUSE:Factory/.terragrunt.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "terragrunt"

Sat Dec 17 20:36:54 2022 rev:22 rq:1043456 version:0.42.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/terragrunt/terragrunt.changes    2022-12-03 
10:03:47.623292707 +0100
+++ /work/SRC/openSUSE:Factory/.terragrunt.new.1835/terragrunt.changes  
2022-12-17 20:37:10.680813560 +0100
@@ -1,0 +2,14 @@
+Fri Dec 16 12:38:27 UTC 2022 - ka...@b1-systems.de
+
+- Update to version 0.42.5:
+  * Fix debug log for GITHUB_TOKEN for tflint (#2395)
+
+-------------------------------------------------------------------
+Fri Dec 16 12:35:49 UTC 2022 - ka...@b1-systems.de
+
+- Update to version 0.42.4:
+  * Expose a token for tflint  (#2387)
+  * Fix typo (#2383)
+  * Add tflint as built-in hook (#2362)
+
+-------------------------------------------------------------------

Old:
----
  terragrunt-0.42.3.tar.gz

New:
----
  terragrunt-0.42.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ terragrunt.spec ++++++
--- /var/tmp/diff_new_pack.Kc6YyF/_old  2022-12-17 20:37:11.552818350 +0100
+++ /var/tmp/diff_new_pack.Kc6YyF/_new  2022-12-17 20:37:11.556818372 +0100
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           terragrunt
-Version:        0.42.3
+Version:        0.42.5
 Release:        0
 Summary:        Thin wrapper for Terraform for working with multiple Terraform 
modules
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.Kc6YyF/_old  2022-12-17 20:37:11.588818548 +0100
+++ /var/tmp/diff_new_pack.Kc6YyF/_new  2022-12-17 20:37:11.592818570 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/gruntwork-io/terragrunt</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.42.3</param>
+    <param name="revision">v0.42.5</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>
@@ -16,7 +16,7 @@
     <param name="compression">gz</param>
   </service>
   <service name="go_modules" mode="disabled">
-    <param name="archive">terragrunt-0.42.3.tar.gz</param>
+    <param name="archive">terragrunt-0.42.5.tar.gz</param>
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.Kc6YyF/_old  2022-12-17 20:37:11.608818657 +0100
+++ /var/tmp/diff_new_pack.Kc6YyF/_new  2022-12-17 20:37:11.612818680 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/gruntwork-io/terragrunt</param>
-              <param 
name="changesrevision">c3870aa5d1d9279a9f8594e4b2d66f75c8cfa1dd</param></service></servicedata>
+              <param 
name="changesrevision">54cb55faa5d849df8f1c3764c6615bfacae134b7</param></service></servicedata>
 (No newline at EOF)
 

++++++ terragrunt-0.42.3.tar.gz -> terragrunt-0.42.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/cli/args.go 
new/terragrunt-0.42.5/cli/args.go
--- old/terragrunt-0.42.3/cli/args.go   2022-12-02 11:19:55.000000000 +0100
+++ new/terragrunt-0.42.5/cli/args.go   2022-12-14 00:58:19.000000000 +0100
@@ -1,7 +1,6 @@
 package cli
 
 import (
-       "encoding/json"
        "fmt"
        "io"
        "os"
@@ -507,7 +506,7 @@
        for varName, varValue := range vars {
                envVarName := fmt.Sprintf("%s_%s", TFVarPrefix, varName)
 
-               envVarValue, err := asTerraformEnvVarJsonValue(varValue)
+               envVarValue, err := util.AsTerraformEnvVarJsonValue(varValue)
                if err != nil {
                        return nil, err
                }
@@ -518,23 +517,6 @@
        return out, nil
 }
 
-// Convert the given value to a JSON value that can be passed to Terraform as 
an environment variable. For the most
-// part, this converts the value directly to JSON using Go's built-in 
json.Marshal. However, we have special handling
-// for strings, which with normal JSON conversion would be wrapped in quotes, 
but when passing them to Terraform via
-// env vars, we need to NOT wrap them in quotes, so this method adds special 
handling for that case.
-func asTerraformEnvVarJsonValue(value interface{}) (string, error) {
-       switch val := value.(type) {
-       case string:
-               return val, nil
-       default:
-               envVarValue, err := json.Marshal(val)
-               if err != nil {
-                       return "", errors.WithStackTrace(err)
-               }
-               return string(envVarValue), nil
-       }
-}
-
 // Custom error types
 
 type ArgMissingValue string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/cli/cli_app.go 
new/terragrunt-0.42.5/cli/cli_app.go
--- old/terragrunt-0.42.3/cli/cli_app.go        2022-12-02 11:19:55.000000000 
+0100
+++ new/terragrunt-0.42.5/cli/cli_app.go        2022-12-14 00:58:19.000000000 
+0100
@@ -9,6 +9,8 @@
        "strings"
        "time"
 
+       "github.com/gruntwork-io/terragrunt/tflint"
+
        "github.com/hashicorp/go-multierror"
        "github.com/mattn/go-zglob"
        "github.com/sirupsen/logrus"
@@ -404,7 +406,7 @@
        terragruntOptionsClone := 
terragruntOptions.Clone(terragruntOptions.TerragruntConfigPath)
        terragruntOptionsClone.TerraformCommand = CMD_TERRAGRUNT_READ_CONFIG
 
-       if err := processHooks(terragruntConfig.Terraform.GetAfterHooks(), 
terragruntOptionsClone, nil); err != nil {
+       if err := processHooks(terragruntConfig.Terraform.GetAfterHooks(), 
terragruntOptionsClone, terragruntConfig, nil); err != nil {
                return err
        }
 
@@ -695,7 +697,7 @@
        return errorsOccured.ErrorOrNil()
 }
 
-func processHooks(hooks []config.Hook, terragruntOptions 
*options.TerragruntOptions, previousExecErrors *multierror.Error) error {
+func processHooks(hooks []config.Hook, terragruntOptions 
*options.TerragruntOptions, terragruntConfig *config.TerragruntConfig, 
previousExecErrors *multierror.Error) error {
        if len(hooks) == 0 {
                return nil
        }
@@ -715,16 +717,25 @@
 
                        actionToExecute := curHook.Execute[0]
                        actionParams := curHook.Execute[1:]
-                       _, possibleError := shell.RunShellCommandWithOutput(
-                               terragruntOptions,
-                               workingDir,
-                               false,
-                               false,
-                               actionToExecute, actionParams...,
-                       )
-                       if possibleError != nil {
-                               terragruntOptions.Logger.Errorf("Error running 
hook %s with message: %s", curHook.Name, possibleError.Error())
-                               errorsOccured = 
multierror.Append(errorsOccured, possibleError)
+
+                       if actionToExecute == "tflint" {
+                               err := 
tflint.RunTflintWithOpts(terragruntOptions, terragruntConfig)
+                               if err != nil {
+                                       terragruntOptions.Logger.Errorf("Error 
running hook %s with message: %s", curHook.Name, err.Error())
+                                       errorsOccured = 
multierror.Append(errorsOccured, err)
+                               }
+                       } else {
+                               _, possibleError := 
shell.RunShellCommandWithOutput(
+                                       terragruntOptions,
+                                       workingDir,
+                                       false,
+                                       false,
+                                       actionToExecute, actionParams...,
+                               )
+                               if possibleError != nil {
+                                       terragruntOptions.Logger.Errorf("Error 
running hook %s with message: %s", curHook.Name, possibleError.Error())
+                                       errorsOccured = 
multierror.Append(errorsOccured, possibleError)
+                               }
                        }
 
                }
@@ -873,7 +884,7 @@
 // errors, run the action, and finally, run the after hooks. Return any errors 
hit from the hooks or action.
 func runActionWithHooks(description string, terragruntOptions 
*options.TerragruntOptions, terragruntConfig *config.TerragruntConfig, action 
func() error) error {
        var allErrors *multierror.Error
-       beforeHookErrors := 
processHooks(terragruntConfig.Terraform.GetBeforeHooks(), terragruntOptions, 
allErrors)
+       beforeHookErrors := 
processHooks(terragruntConfig.Terraform.GetBeforeHooks(), terragruntOptions, 
terragruntConfig, allErrors)
        allErrors = multierror.Append(allErrors, beforeHookErrors)
 
        var actionErrors error
@@ -883,7 +894,7 @@
        } else {
                terragruntOptions.Logger.Errorf("Errors encountered running 
before_hooks. Not running '%s'.", description)
        }
-       postHookErrors := 
processHooks(terragruntConfig.Terraform.GetAfterHooks(), terragruntOptions, 
allErrors)
+       postHookErrors := 
processHooks(terragruntConfig.Terraform.GetAfterHooks(), terragruntOptions, 
terragruntConfig, allErrors)
        errorHookErrors := 
processErrorHooks(terragruntConfig.Terraform.GetErrorHooks(), 
terragruntOptions, allErrors)
        allErrors = multierror.Append(allErrors, postHookErrors, 
errorHookErrors)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/codegen/generate.go 
new/terragrunt-0.42.5/codegen/generate.go
--- old/terragrunt-0.42.3/codegen/generate.go   2022-12-02 11:19:55.000000000 
+0100
+++ new/terragrunt-0.42.5/codegen/generate.go   2022-12-14 00:58:19.000000000 
+0100
@@ -173,7 +173,7 @@
        return f.Bytes(), nil
 }
 
-// GenerateConfigExistsFromString converst a string representation of 
if_exists into the enum, returning an error if it
+// GenerateConfigExistsFromString converts a string representation of 
if_exists into the enum, returning an error if it
 // is not set to one of the known values.
 func GenerateConfigExistsFromString(val string) (GenerateConfigExists, error) {
        switch val {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/docs/_docs/02_features/hooks.md 
new/terragrunt-0.42.5/docs/_docs/02_features/hooks.md
--- old/terragrunt-0.42.3/docs/_docs/02_features/hooks.md       2022-12-02 
11:19:55.000000000 +0100
+++ new/terragrunt-0.42.5/docs/_docs/02_features/hooks.md       2022-12-14 
00:58:19.000000000 +0100
@@ -59,6 +59,62 @@
 You can learn more about all the various configuration options supported in 
[the reference docs for the terraform
 block](/docs/reference/config-blocks-and-attributes/#terraform).
 
+### Tflint hook
+
+*Before Hooks* or *After Hooks* support natively *tflint*, a linter for 
Terraform code. It will validate the
+Terraform code used by Terragrunt, and it's inputs.
+
+Here's an example:
+```hcl
+terraform {
+  before_hook "before_hook" {
+    commands     = ["apply", "plan"]
+    execute      = ["tflint"]
+  }
+}
+```
+
+The `.tflint.hcl` should exist in the same folder as `terragrunt.hcl` or one 
of it's parents. If Terragrunt can't find
+a `.tflint.hcl` file, it won't execute tflint and return an error.
+```hcl
+plugin "aws" {
+    enabled = true
+    version = "0.21.0"
+    source  = "github.com/terraform-linters/tflint-ruleset-aws"
+}
+```
+
+#### Configuration
+
+The `execute` parameter only accepts `tflint`, it will ignore any other 
parameter. Any desired extra configuration should be added in the `.tflint.hcl` 
file. It will work with a `.tflint.hcl` file in the current folder or any 
parent folder.
+
+#### Authentication for tflint rulesets 
+*Public rulesets*
+
+`tflint` works without any authentication for public rulesets (hosted on 
public repositories).
+
+*Private rulesets*
+
+If you want to run a the `tflint` hook with custom rulesets defined in a 
private repository, you will need to export locally a valid 
`GITHUB_OAUTH_TOKEN` token. Terragrunt will take that and expose it to the 
`tflint`-recognised authentication token - `GITHUB_TOKEN`.
+
+#### Troubleshooting
+
+**`flag provided but not defined: -act-as-bundled-plugin` error**
+
+If you have an `.tflint.hcl` file that is empty, or uses the `terraform` 
ruleset without version or source constraint, it returns the following error:
+```
+Failed to initialize plugins; Unrecognized remote plugin message: Incorrect 
Usage. flag provided but not defined: -act-as-bundled-plugin
+```
+
+To fix this, make sure that the configuration for the `terraform` ruleset, in 
the `.tflint.hcl` file contains a version constraint:
+```
+plugin "terraform" {
+    enabled = true
+    version = "0.2.1"
+    source  = "github.com/terraform-linters/tflint-ruleset-terraform"
+}
+```
+
 ## Error Hooks
 *Error hooks* are a special type of after hook that act as exception handlers. 
They allow you to specify a list of expressions that can be used to catch 
errors and run custom commands when those errors occur. Error hooks are 
executed after the before/after hooks.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/go.mod new/terragrunt-0.42.5/go.mod
--- old/terragrunt-0.42.3/go.mod        2022-12-02 11:19:55.000000000 +0100
+++ new/terragrunt-0.42.5/go.mod        2022-12-14 00:58:19.000000000 +0100
@@ -4,18 +4,18 @@
 
 require (
        cloud.google.com/go/storage v1.16.0
-       github.com/aws/aws-sdk-go v1.41.7
+       github.com/aws/aws-sdk-go v1.42.43
        github.com/creack/pty v1.1.11
        github.com/fatih/structs v1.1.0
        github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0
        github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf
        github.com/gruntwork-io/terratest v0.32.6
        github.com/hashicorp/go-cleanhttp v0.5.2
-       github.com/hashicorp/go-getter v1.6.1
+       github.com/hashicorp/go-getter v1.6.2
        github.com/hashicorp/go-multierror v1.1.1
        github.com/hashicorp/go-safetemp v1.0.0
-       github.com/hashicorp/go-version v1.3.0
-       github.com/hashicorp/hcl/v2 v2.10.0
+       github.com/hashicorp/go-version v1.6.0
+       github.com/hashicorp/hcl/v2 v2.14.1
 
        // Many functions of terraform was converted to internal to avoid use 
as a library after v0.15.3. This means that we
        // can't use terraform as a library after v0.15.3, so we pull that in 
here.
@@ -26,11 +26,11 @@
        github.com/mitchellh/go-homedir v1.1.0
        github.com/mitchellh/mapstructure v1.3.3
        github.com/sirupsen/logrus v1.8.1
-       github.com/stretchr/testify v1.6.1
+       github.com/stretchr/testify v1.7.2
        github.com/urfave/cli v1.22.3
-       github.com/zclconf/go-cty v1.8.3
+       github.com/zclconf/go-cty v1.11.1
        go.mozilla.org/sops/v3 v3.7.2
-       golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
+       golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167
        golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f
        golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
        golang.org/x/sys v0.1.0
@@ -39,19 +39,41 @@
 
 require (
        cloud.google.com/go v0.93.3 // indirect
+       github.com/Azure/go-autorest/autorest/azure/auth v0.5.7 // indirect
+       github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 // 
indirect
+       github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe // 
indirect
+       github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // 
indirect
+       github.com/golang/snappy v0.0.4 // indirect
+       github.com/hashicorp/go-retryablehttp v0.6.7 // indirect
+       github.com/hashicorp/hcl v1.0.1-vault // indirect
+       github.com/hashicorp/vault/api v1.0.5-0.20210210214158-405eced08457 // 
indirect
+       github.com/hashicorp/vault/sdk v0.1.14-0.20210322210658-b52b8b8c1264 // 
indirect
+       github.com/klauspost/compress v1.13.4 // indirect
+       github.com/mitchellh/go-wordwrap v1.0.1 // indirect
+       github.com/opencontainers/image-spec v1.0.2 // indirect
+       github.com/opencontainers/runc v1.1.2 // indirect
+       github.com/ory/dockertest v3.3.5+incompatible // indirect
+       github.com/pquerna/otp v1.2.1-0.20191009055518-468c2dd2b58d // indirect
+       github.com/smartystreets/goconvey v1.6.4 // indirect
+       github.com/terraform-linters/tflint v0.42.2
+       github.com/ulikunitz/xz v0.5.10 // indirect
+       golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e // indirect
+       google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8 // 
indirect
+)
+
+require (
        filippo.io/age v1.0.0-beta7 // indirect
        github.com/Azure/azure-sdk-for-go v52.5.0+incompatible // indirect
        github.com/Azure/go-autorest v14.2.0+incompatible // indirect
        github.com/Azure/go-autorest/autorest v0.11.18 // indirect
        github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
-       github.com/Azure/go-autorest/autorest/azure/auth v0.5.7 // indirect
        github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 // indirect
        github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
        github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
        github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
        github.com/Azure/go-autorest/logger v0.2.1 // indirect
        github.com/Azure/go-autorest/tracing v0.6.0 // indirect
-       github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 // 
indirect
+       github.com/Masterminds/semver/v3 v3.1.1 // indirect
        github.com/agext/levenshtein v1.2.3 // indirect
        github.com/apparentlymart/go-cidr v1.1.0 // indirect
        github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
@@ -59,71 +81,69 @@
        github.com/blang/semver v3.5.1+incompatible // indirect
        github.com/bmatcuk/doublestar v1.1.5 // indirect
        github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // 
indirect
-       github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe // 
indirect
        github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
        github.com/davecgh/go-spew v1.1.1 // indirect
        github.com/dimchansky/utfbom v1.1.1 // indirect
-       github.com/fatih/color v1.9.0 // indirect
+       github.com/fatih/color v1.13.0 // indirect
        github.com/form3tech-oss/jwt-go v3.2.2+incompatible // indirect
        github.com/frankban/quicktest v1.11.3 // indirect
        github.com/go-sql-driver/mysql v1.5.0 // indirect
-       github.com/go-test/deep v1.0.7 // indirect
-       github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // 
indirect
        github.com/golang/protobuf v1.5.2 // indirect
-       github.com/golang/snappy v0.0.4 // indirect
-       github.com/google/go-cmp v0.5.6 // indirect
-       github.com/google/uuid v1.2.0 // indirect
+       github.com/google/go-cmp v0.5.9 // indirect
+       github.com/google/go-github/v35 v35.3.0 // indirect
+       github.com/google/go-querystring v1.0.0 // indirect
+       github.com/google/uuid v1.3.0 // indirect
        github.com/googleapis/gax-go/v2 v2.0.5 // indirect
        github.com/goware/prefixer v0.0.0-20160118172347-395022866408 // 
indirect
        github.com/gruntwork-io/gruntwork-cli v0.7.0 // indirect
        github.com/hashicorp/errwrap v1.1.0 // indirect
-       github.com/hashicorp/go-retryablehttp v0.6.7 // indirect
+       github.com/hashicorp/go-hclog v1.3.1 // indirect
+       github.com/hashicorp/go-plugin v1.4.5 // indirect
        github.com/hashicorp/go-rootcerts v1.0.2 // indirect
        github.com/hashicorp/go-sockaddr v1.0.2 // indirect
-       github.com/hashicorp/go-uuid v1.0.2 // indirect
-       github.com/hashicorp/hcl v1.0.1-vault // indirect
+       github.com/hashicorp/go-uuid v1.0.3 // indirect
+       github.com/hashicorp/logutils v1.0.0 // indirect
+       github.com/hashicorp/terraform-registry-address 
v0.0.0-20220623143253-7d51757b572c // indirect
        github.com/hashicorp/terraform-svchost 
v0.0.0-20200729002733-f050f53b9734 // indirect
-       github.com/hashicorp/vault/api v1.0.5-0.20210210214158-405eced08457 // 
indirect
-       github.com/hashicorp/vault/sdk v0.1.14-0.20210322210658-b52b8b8c1264 // 
indirect
+       github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // 
indirect
        github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c // indirect
+       github.com/jessevdk/go-flags v1.5.0 // indirect
        github.com/jmespath/go-jmespath v0.4.0 // indirect
-       github.com/klauspost/compress v1.13.4 // indirect
-       github.com/kr/pretty v0.2.1 // indirect
+       github.com/jstemmer/go-junit-report v1.0.0 // indirect
        github.com/lib/pq v1.8.0 // indirect
-       github.com/mattn/go-colorable v0.1.7 // indirect
-       github.com/mattn/go-isatty v0.0.12 // indirect
+       github.com/mattn/go-colorable v0.1.13 // indirect
+       github.com/mattn/go-isatty v0.0.16 // indirect
        github.com/mitchellh/go-testing-interface v1.14.1 // indirect
-       github.com/mitchellh/go-wordwrap v1.0.1 // indirect
-       github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // 
indirect
-       github.com/opencontainers/image-spec v1.0.2 // indirect
-       github.com/opencontainers/runc v1.1.2 // indirect
-       github.com/ory/dockertest v3.3.5+incompatible // indirect
+       github.com/oklog/run v1.0.0 // indirect
+       github.com/owenrumney/go-sarif v1.1.1 // indirect
        github.com/pierrec/lz4 v2.5.2+incompatible // indirect
        github.com/pkg/errors v0.9.1 // indirect
        github.com/pmezard/go-difflib v1.0.0 // indirect
-       github.com/pquerna/otp v1.2.1-0.20191009055518-468c2dd2b58d // indirect
        github.com/russross/blackfriday/v2 v2.0.1 // indirect
        github.com/ryanuber/go-glob v1.0.0 // indirect
-       github.com/sergi/go-diff v1.1.0 // indirect
+       github.com/sergi/go-diff v1.2.0 // indirect
        github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
-       github.com/smartystreets/goconvey v1.6.4 // indirect
-       github.com/ulikunitz/xz v0.5.10 // indirect
+       github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d // 
indirect
+       github.com/sourcegraph/jsonrpc2 v0.1.0 // indirect
+       github.com/spf13/afero v1.9.2 // indirect
+       github.com/terraform-linters/tflint-plugin-sdk v0.14.0 // indirect
+       github.com/terraform-linters/tflint-ruleset-terraform v0.2.1 // indirect
+       github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
+       github.com/vmihailenco/tagparser v0.1.1 // indirect
        github.com/zclconf/go-cty-yaml v1.0.2 // indirect
        go.mozilla.org/gopgagent v0.0.0-20170926210634-4d7ea76ff71a // indirect
        go.opencensus.io v0.23.0 // indirect
+       golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
        golang.org/x/net v0.1.0 // indirect
        golang.org/x/term v0.1.0 // indirect
        golang.org/x/text v0.4.0 // indirect
-       golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e // indirect
        google.golang.org/appengine v1.6.7 // indirect
-       google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8 // 
indirect
-       google.golang.org/grpc v1.40.0 // indirect
-       google.golang.org/protobuf v1.27.1 // indirect
-       gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
+       google.golang.org/grpc v1.50.1 // indirect
+       google.golang.org/protobuf v1.28.1 // indirect
        gopkg.in/ini.v1 v1.44.0 // indirect
        gopkg.in/square/go-jose.v2 v2.5.1 // indirect
        gopkg.in/urfave/cli.v1 v1.20.0 // indirect
-       gopkg.in/yaml.v3 v3.0.0-20210107172259-749611fa9fcc // indirect
+       gopkg.in/yaml.v3 v3.0.1 // indirect
 )
 
 // This is necessary to workaround go modules error with terraform importing 
vault incorrectly.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/go.sum new/terragrunt-0.42.5/go.sum
--- old/terragrunt-0.42.3/go.sum        2022-12-02 11:19:55.000000000 +0100
+++ new/terragrunt-0.42.5/go.sum        2022-12-14 00:58:19.000000000 +0100
@@ -4,6 +4,7 @@
 cloud.google.com/go v0.38.0/go.mod 
h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
 cloud.google.com/go v0.44.1/go.mod 
h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
 cloud.google.com/go v0.44.2/go.mod 
h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.44.3/go.mod 
h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
 cloud.google.com/go v0.45.1/go.mod 
h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
 cloud.google.com/go v0.46.3/go.mod 
h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
 cloud.google.com/go v0.50.0/go.mod 
h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
@@ -17,6 +18,7 @@
 cloud.google.com/go v0.65.0/go.mod 
h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
 cloud.google.com/go v0.72.0/go.mod 
h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
 cloud.google.com/go v0.74.0/go.mod 
h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
+cloud.google.com/go v0.75.0/go.mod 
h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
 cloud.google.com/go v0.78.0/go.mod 
h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
 cloud.google.com/go v0.79.0/go.mod 
h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
 cloud.google.com/go v0.81.0/go.mod 
h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
@@ -43,6 +45,7 @@
 cloud.google.com/go/storage v1.6.0/go.mod 
h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
 cloud.google.com/go/storage v1.8.0/go.mod 
h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
 cloud.google.com/go/storage v1.10.0/go.mod 
h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+cloud.google.com/go/storage v1.14.0/go.mod 
h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
 cloud.google.com/go/storage v1.16.0 
h1:1UwAux2OZP4310YXg5ohqBEpV16Y93uZG4+qOX7K2Kg=
 cloud.google.com/go/storage v1.16.0/go.mod 
h1:ieKBmUyzcftN5tbxwnXClMKH00CfcQ+xL6NN0r5QfmE=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod 
h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
@@ -122,6 +125,8 @@
 github.com/GoogleCloudPlatform/k8s-cloud-provider 
v0.0.0-20190822182118-27a4ced34534/go.mod 
h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14=
 github.com/Masterminds/goutils v1.1.0/go.mod 
h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
 github.com/Masterminds/semver v1.5.0/go.mod 
h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
+github.com/Masterminds/semver/v3 v3.1.1 
h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
+github.com/Masterminds/semver/v3 v3.1.1/go.mod 
h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
 github.com/Masterminds/sprig v2.22.0+incompatible/go.mod 
h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
 github.com/Microsoft/go-winio v0.4.14/go.mod 
h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
 github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod 
h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
@@ -177,8 +182,8 @@
 github.com/aws/aws-sdk-go v1.30.27/go.mod 
h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
 github.com/aws/aws-sdk-go v1.31.9/go.mod 
h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
 github.com/aws/aws-sdk-go v1.37.0/go.mod 
h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
-github.com/aws/aws-sdk-go v1.41.7 
h1:vlpR8Cky3ZxUVNINgeRZS6N0p6zmFvu/ZqRRwrTI25U=
-github.com/aws/aws-sdk-go v1.41.7/go.mod 
h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
+github.com/aws/aws-sdk-go v1.42.43 
h1:rLcxH9YgI3zN7TnjBn1Z6V62GPjOEW1IQd0m11Y/nXE=
+github.com/aws/aws-sdk-go v1.42.43/go.mod 
h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc=
 github.com/baiyubin/aliyun-sts-go-sdk 
v0.0.0-20180326062324-cfa1a18b161f/go.mod 
h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod 
h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 github.com/beorn7/perks v1.0.0/go.mod 
h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -293,8 +298,9 @@
 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod 
h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v4.9.0+incompatible/go.mod 
h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/fatih/color v1.7.0/go.mod 
h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
 github.com/fatih/color v1.9.0/go.mod 
h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
+github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
+github.com/fatih/color v1.13.0/go.mod 
h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
 github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
 github.com/fatih/structs v1.1.0/go.mod 
h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible 
h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk=
@@ -340,8 +346,7 @@
 github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.2/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.3/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
-github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
-github.com/go-test/deep v1.0.7/go.mod 
h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
+github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
 github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod 
h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
 github.com/godbus/dbus/v5 v5.0.4/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/godbus/dbus/v5 v5.0.6/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -405,9 +410,14 @@
 github.com/google/go-cmp v0.5.3/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.4/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
 github.com/google/go-cmp v0.5.6/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.8/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-containerregistry 
v0.0.0-20200110202235-f4fb41bf00a3/go.mod 
h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk=
+github.com/google/go-github/v35 v35.3.0 
h1:fU+WBzuukn0VssbayTT+Zo3/ESKX9JYWjbZTLOTEyho=
+github.com/google/go-github/v35 v35.3.0/go.mod 
h1:yWB7uCcVWaUbUP74Aq3whuMySRMatyRmq5U9FTNlbio=
+github.com/google/go-querystring v1.0.0 
h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
 github.com/google/go-querystring v1.0.0/go.mod 
h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
 github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod 
h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
 github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod 
h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
@@ -428,6 +438,7 @@
 github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod 
h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod 
h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
@@ -439,14 +450,16 @@
 github.com/google/uuid v1.0.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
 github.com/google/uuid v1.2.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod 
h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5 
h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod 
h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod 
h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
 github.com/googleapis/gnostic v0.2.2/go.mod 
h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
 github.com/googleapis/gnostic v0.4.1/go.mod 
h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
+github.com/googleapis/google-cloud-go-testing 
v0.0.0-20200911160855-bcd43fbb19e8/go.mod 
h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
 github.com/gophercloud/gophercloud v0.1.0/go.mod 
h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
 github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod 
h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM=
 github.com/gophercloud/gophercloud 
v0.10.1-0.20200424014253-c3bfe50899e5/go.mod 
h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
@@ -457,6 +470,8 @@
 github.com/gorilla/mux v1.7.4/go.mod 
h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod 
h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
 github.com/gorilla/websocket v1.4.0/go.mod 
h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+github.com/gorilla/websocket v1.4.1 
h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
+github.com/gorilla/websocket v1.4.1/go.mod 
h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/goware/prefixer v0.0.0-20160118172347-395022866408 
h1:Y9iQJfEqnN3/Nce9cOegemcy/9Ai5k3huT6E80F3zaw=
 github.com/goware/prefixer v0.0.0-20160118172347-395022866408/go.mod 
h1:PE1ycukgRPJ7bJ9a1fdfQ9j8i/cEcRAoLZzbxYpNB/s=
 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod 
h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@@ -483,14 +498,15 @@
 github.com/hashicorp/go-cleanhttp v0.5.2 
h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
 github.com/hashicorp/go-cleanhttp v0.5.2/go.mod 
h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
 github.com/hashicorp/go-getter v1.5.1/go.mod 
h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM=
-github.com/hashicorp/go-getter v1.6.1 
h1:NASsgP4q6tL94WH6nJxKWj8As2H/2kop/bB1d8JMyRY=
-github.com/hashicorp/go-getter v1.6.1/go.mod 
h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA=
+github.com/hashicorp/go-getter v1.6.2 
h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk=
+github.com/hashicorp/go-getter v1.6.2/go.mod 
h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA=
 github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod 
h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
 github.com/hashicorp/go-hclog v0.9.2/go.mod 
h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
 github.com/hashicorp/go-hclog v0.12.0/go.mod 
h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
 github.com/hashicorp/go-hclog v0.14.1/go.mod 
h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v0.15.0 
h1:qMuK0wxsoW4D0ddCCYwPSTm4KQv1X1ke3WmPWZ0Mvsk=
 github.com/hashicorp/go-hclog v0.15.0/go.mod 
h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
+github.com/hashicorp/go-hclog v1.3.1 
h1:vDwF1DFNZhntP4DAjuTpOw3uEgMUpXh1pB5fW9DqHpo=
+github.com/hashicorp/go-hclog v1.3.1/go.mod 
h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
 github.com/hashicorp/go-immutable-radix 
v0.0.0-20180129170900-7f3cd4390caa/go.mod 
h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw=
 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod 
h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
 github.com/hashicorp/go-immutable-radix v1.1.0/go.mod 
h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -502,6 +518,8 @@
 github.com/hashicorp/go-multierror v1.1.1/go.mod 
h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
 github.com/hashicorp/go-plugin v1.0.1/go.mod 
h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
 github.com/hashicorp/go-plugin v1.4.1/go.mod 
h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
+github.com/hashicorp/go-plugin v1.4.5 
h1:oTE/oQR4eghggRg8VY7PAz3dr++VwDNBGCcOfIvHpBo=
+github.com/hashicorp/go-plugin v1.4.5/go.mod 
h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
 github.com/hashicorp/go-retryablehttp v0.5.2/go.mod 
h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
 github.com/hashicorp/go-retryablehttp v0.5.3/go.mod 
h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
 github.com/hashicorp/go-retryablehttp v0.6.2/go.mod 
h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY=
@@ -521,14 +539,15 @@
 github.com/hashicorp/go-tfe v0.14.0/go.mod 
h1:B71izbwmCZdhEo/GzHopCXN3P74cYv2tsff1mxY4J6c=
 github.com/hashicorp/go-uuid v1.0.0/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.1/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 
h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
 github.com/hashicorp/go-uuid v1.0.2/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.3 
h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
+github.com/hashicorp/go-uuid v1.0.3/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-version v1.0.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/go-version v1.1.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/go-version v1.2.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/go-version v1.2.1/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.0 
h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw=
-github.com/hashicorp/go-version v1.3.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go-version v1.6.0 
h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
+github.com/hashicorp/go-version v1.6.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/golang-lru v0.5.0/go.mod 
h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/hashicorp/golang-lru v0.5.1/go.mod 
h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/hashicorp/golang-lru v0.5.3/go.mod 
h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
@@ -537,9 +556,12 @@
 github.com/hashicorp/hcl v1.0.1-vault 
h1:UiJeEzCWAYdVaJr8Xo4lBkTozlW1+1yxVUnpbS1xVEk=
 github.com/hashicorp/hcl v1.0.1-vault/go.mod 
h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/hashicorp/hcl/v2 v2.0.0/go.mod 
h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90=
-github.com/hashicorp/hcl/v2 v2.10.0 
h1:1S1UnuhDGlv3gRFV4+0EdwB+znNP5HmcGbIqwnSCByg=
 github.com/hashicorp/hcl/v2 v2.10.0/go.mod 
h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg=
+github.com/hashicorp/hcl/v2 v2.14.1 
h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34=
+github.com/hashicorp/hcl/v2 v2.14.1/go.mod 
h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0=
 github.com/hashicorp/jsonapi v0.0.0-20210420151930-edf82c9774bf/go.mod 
h1:Yog5+CPEM3c99L1CL2CFCYoSzgWm5vTU58idbRUaLik=
+github.com/hashicorp/logutils v1.0.0 
h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
+github.com/hashicorp/logutils v1.0.0/go.mod 
h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
 github.com/hashicorp/memberlist v0.1.0/go.mod 
h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE=
 github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod 
h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE=
 github.com/hashicorp/terraform v0.15.3 
h1:2QWbTj2xJ/8W1gCyIrd0WAqVF4weKPMYjx8nKjbkQjA=
@@ -547,6 +569,8 @@
 github.com/hashicorp/terraform-config-inspect 
v0.0.0-20210209133302-4fd17a0faac2/go.mod 
h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs=
 github.com/hashicorp/terraform-config-inspect 
v0.0.0-20210318070130-9a80970d6b34 
h1:y4kOB9aYVSsJWVqewwUZmHxPSNjkDbOeW7eb9yFIc3Q=
 github.com/hashicorp/terraform-config-inspect 
v0.0.0-20210318070130-9a80970d6b34/go.mod 
h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs=
+github.com/hashicorp/terraform-registry-address 
v0.0.0-20220623143253-7d51757b572c 
h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg=
+github.com/hashicorp/terraform-registry-address 
v0.0.0-20220623143253-7d51757b572c/go.mod 
h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI=
 github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 
h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
 github.com/hashicorp/terraform-svchost 
v0.0.0-20200729002733-f050f53b9734/go.mod 
h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
 github.com/hashicorp/vault/api v1.0.5-0.20200519221902-385fac77e20f/go.mod 
h1:euTFbi2YJgwcju3imEt919lhJKF68nN1cQPq3aA+kBE=
@@ -557,6 +581,7 @@
 github.com/hashicorp/vault/sdk v0.1.14-0.20210322210658-b52b8b8c1264 
h1:HBea5s9BAi5tPYeBt5IDZX1bamxpgfyAQWy9JSOCPK8=
 github.com/hashicorp/vault/sdk v0.1.14-0.20210322210658-b52b8b8c1264/go.mod 
h1:cAGI4nVnEfAyMeqt9oB+Mase8DNn3qA/LDNHURiwssY=
 github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod 
h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
+github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d 
h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
 github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod 
h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
 github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c 
h1:kQWxfPIHVLbgLzphqk3QUflDy9QdksZR4ygR807bpy0=
 github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod 
h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
@@ -569,6 +594,9 @@
 github.com/imdario/mergo v0.3.11 
h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=
 github.com/imdario/mergo v0.3.11/go.mod 
h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod 
h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/jessevdk/go-flags v1.5.0 
h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
+github.com/jessevdk/go-flags v1.5.0/go.mod 
h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+github.com/jhump/protoreflect v1.6.0 
h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
 github.com/jhump/protoreflect v1.6.0/go.mod 
h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
 github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod 
h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s=
 github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod 
h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
@@ -590,6 +618,8 @@
 github.com/json-iterator/go v1.1.10/go.mod 
h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod 
h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
 github.com/jstemmer/go-junit-report v0.9.1/go.mod 
h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/jstemmer/go-junit-report v1.0.0 
h1:8X1gzZpR+nVQLAht+L/foqOeX2l9DTZoaIPbEQHxsds=
+github.com/jstemmer/go-junit-report v1.0.0/go.mod 
h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
 github.com/jtolds/gls v4.2.1+incompatible/go.mod 
h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/jtolds/gls v4.20.0+incompatible 
h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod 
h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
@@ -603,6 +633,7 @@
 github.com/klauspost/compress v1.13.4/go.mod 
h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod 
h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod 
h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod 
h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.0/go.mod 
h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -637,15 +668,19 @@
 github.com/mattn/go-colorable v0.0.9/go.mod 
h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.4/go.mod 
h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-colorable v0.1.6/go.mod 
h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.7 
h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
-github.com/mattn/go-colorable v0.1.7/go.mod 
h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.9/go.mod 
h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.12/go.mod 
h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.13 
h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod 
h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 github.com/mattn/go-isatty v0.0.3/go.mod 
h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.4/go.mod 
h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.8/go.mod 
h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 github.com/mattn/go-isatty v0.0.10/go.mod 
h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
 github.com/mattn/go-isatty v0.0.11/go.mod 
h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
-github.com/mattn/go-isatty v0.0.12 
h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 github.com/mattn/go-isatty v0.0.12/go.mod 
h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod 
h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-isatty v0.0.16 
h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
+github.com/mattn/go-isatty v0.0.16/go.mod 
h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-runewidth v0.0.2/go.mod 
h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
 github.com/mattn/go-runewidth v0.0.4/go.mod 
h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
 github.com/mattn/go-shellwords v1.0.4/go.mod 
h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
@@ -694,9 +729,8 @@
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod 
h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod 
h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod 
h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e 
h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod 
h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod 
h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
+github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
 github.com/oklog/run v1.0.0/go.mod 
h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
 github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod 
h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -725,6 +759,8 @@
 github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod 
h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888=
 github.com/ory/dockertest v3.3.5+incompatible 
h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
 github.com/ory/dockertest v3.3.5+incompatible/go.mod 
h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
+github.com/owenrumney/go-sarif v1.1.1 
h1:QNObu6YX1igyFKhdzd7vgzmw7XsWN3/6NMGuDzBgXmE=
+github.com/owenrumney/go-sarif v1.1.1/go.mod 
h1:dNDiPlF04ESR/6fHlPyq7gHKmrM0sHUvAGjsoh8ZH0U=
 github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod 
h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod 
h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0/go.mod 
h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -739,6 +775,7 @@
 github.com/pkg/errors v0.8.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/sftp v1.13.1/go.mod 
h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
 github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -785,8 +822,9 @@
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod 
h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
 github.com/seccomp/libseccomp-golang 
v0.9.2-0.20210429002308-3879420cc921/go.mod 
h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
 github.com/sergi/go-diff v1.0.0/go.mod 
h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
-github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
 github.com/sergi/go-diff v1.1.0/go.mod 
h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
+github.com/sergi/go-diff v1.2.0/go.mod 
h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 github.com/shurcooL/sanitized_anchor_name v1.0.0 
h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod 
h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod 
h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
@@ -801,9 +839,15 @@
 github.com/smartystreets/goconvey v1.6.4 
h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
 github.com/smartystreets/goconvey v1.6.4/go.mod 
h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod 
h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
+github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d 
h1:afLbh+ltiygTOB37ymZVwKlJwWZn+86syPTbrrOAydY=
+github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d/go.mod 
h1:SULmZY7YNBsvNiQbrb/BEDdEJ84TGnfyUQxaHt8t8rY=
+github.com/sourcegraph/jsonrpc2 v0.1.0 
h1:ohJHjZ+PcaLxDUjqk2NC3tIGsVa5bXThe1ZheSXOjuk=
+github.com/sourcegraph/jsonrpc2 v0.1.0/go.mod 
h1:ZafdZgk/axhT1cvZAPOhw+95nz2I/Ra5qMlU4gTRwIo=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod 
h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/afero v1.1.2/go.mod 
h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
 github.com/spf13/afero v1.2.2/go.mod 
h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
+github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw=
+github.com/spf13/afero v1.9.2/go.mod 
h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
 github.com/spf13/cast v1.3.0/go.mod 
h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
 github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod 
h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
 github.com/spf13/cobra v0.0.3/go.mod 
h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
@@ -825,11 +869,19 @@
 github.com/stretchr/testify v1.3.0/go.mod 
h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod 
h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 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/stretchr/testify v1.7.0/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.2 
h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
+github.com/stretchr/testify v1.7.2/go.mod 
h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod 
h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
 github.com/tencentcloud/tencentcloud-sdk-go v3.0.82+incompatible/go.mod 
h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
 github.com/tencentyun/cos-go-sdk-v5 v0.0.0-20190808065407-f07404cefc8c/go.mod 
h1:wk2XFUg6egk4tSDNZtXeKfe2G6690UVyt163PuUxBZk=
+github.com/terraform-linters/tflint v0.42.2 
h1:Jv9qRFsFte8Vp3NsaBRC106gGeyN1z559vGc7b2BXa8=
+github.com/terraform-linters/tflint v0.42.2/go.mod 
h1:edfev/tJYLQyBKwaNYLkX8Gze/OV5m8qo3kZCxuOajA=
+github.com/terraform-linters/tflint-plugin-sdk v0.14.0 
h1:OxrOQGYzcaGdStGid0Uk8MPLL/rAsINPBj/YZRU2jCw=
+github.com/terraform-linters/tflint-plugin-sdk v0.14.0/go.mod 
h1:XTwUT3Pj5Vp2Q+XkdNeNXg51MYGU/0X3ZxAxPOzHntg=
+github.com/terraform-linters/tflint-ruleset-terraform v0.2.1 
h1:xCBhLmRyPc0rhAD1Ar5hi1ja4ZSzMP3XEH58GBRH2vI=
+github.com/terraform-linters/tflint-ruleset-terraform v0.2.1/go.mod 
h1:tHCcf0QjilDhjgkbx+meSV9BAYwd3bP3s/YczupbPQM=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod 
h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod 
h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tombuildsstuff/giovanni v0.15.1/go.mod 
h1:0TZugJPEtqzPlMpuJHYfXY6Dq2uLPrXf98D2XQSxNbA=
@@ -849,10 +901,15 @@
 github.com/vishvananda/netlink v1.1.0/go.mod 
h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
 github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod 
h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
 github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod 
h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
+github.com/vmihailenco/msgpack/v4 v4.3.12 
h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
 github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod 
h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
+github.com/vmihailenco/tagparser v0.1.1 
h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY=
 github.com/vmihailenco/tagparser v0.1.1/go.mod 
h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
 github.com/vmware/govmomi v0.20.3/go.mod 
h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
 github.com/xanzy/ssh-agent v0.2.1/go.mod 
h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
+github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f 
h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 
h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
+github.com/xeipuuv/gojsonschema v1.2.0 
h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
 github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod 
h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod 
h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod 
h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
@@ -866,8 +923,10 @@
 github.com/zclconf/go-cty v1.1.0/go.mod 
h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
 github.com/zclconf/go-cty v1.2.0/go.mod 
h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
 github.com/zclconf/go-cty v1.8.0/go.mod 
h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
-github.com/zclconf/go-cty v1.8.3 
h1:48gwZXrdSADU2UW9eZKHprxAI7APZGW9XmExpJpSjT0=
 github.com/zclconf/go-cty v1.8.3/go.mod 
h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
+github.com/zclconf/go-cty v1.10.0/go.mod 
h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
+github.com/zclconf/go-cty v1.11.1 
h1:UMMYDL4riBFaPdzjEWcDdWG7x/Adz8E8f9OX/MGR7V4=
+github.com/zclconf/go-cty v1.11.1/go.mod 
h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA=
 github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod 
h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
 github.com/zclconf/go-cty-yaml v1.0.2 
h1:dNyg4QLTrv2IfJpm7Wtxi55ed5gLGOlPrZ6kMd51hY0=
 github.com/zclconf/go-cty-yaml v1.0.2/go.mod 
h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0=
@@ -915,8 +974,10 @@
 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod 
h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod 
h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod 
h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 
h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod 
h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 
h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0=
+golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod 
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod 
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod 
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -929,6 +990,8 @@
 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod 
h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod 
h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
 golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod 
h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e 
h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
+golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod 
h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod 
h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod 
h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod 
h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1008,7 +1071,7 @@
 golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod 
h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod 
h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
 golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod 
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1105,21 +1168,27 @@
 golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod 
h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
@@ -1205,6 +1274,7 @@
 golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.0/go.mod 
h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
 golang.org/x/tools v0.1.1/go.mod 
h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.2/go.mod 
h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
@@ -1293,7 +1363,9 @@
 google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod 
h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1341,8 +1413,9 @@
 google.golang.org/grpc v1.38.0/go.mod 
h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
 google.golang.org/grpc v1.39.0/go.mod 
h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
 google.golang.org/grpc v1.39.1/go.mod 
h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
-google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q=
 google.golang.org/grpc v1.40.0/go.mod 
h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
+google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY=
+google.golang.org/grpc v1.50.1/go.mod 
h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod 
h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod 
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod 
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1356,15 +1429,15 @@
 google.golang.org/protobuf v1.25.0/go.mod 
h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod 
h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0/go.mod 
h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1 
h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
 google.golang.org/protobuf v1.27.1/go.mod 
h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.1 
h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
+google.golang.org/protobuf v1.28.1/go.mod 
h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod 
h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod 
h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f 
h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod 
h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
 gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod 
h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
@@ -1394,11 +1467,11 @@
 gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107172259-749611fa9fcc 
h1:XANm4xAMEQhRdWKqaL0qmhGDv7RuobwCO97TIlktaQE=
-gopkg.in/yaml.v3 v3.0.0-20210107172259-749611fa9fcc/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools v2.2.0+incompatible/go.mod 
h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod 
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/issues-found/.tflint.hcl 
new/terragrunt-0.42.5/test/fixture-tflint/issues-found/.tflint.hcl
--- old/terragrunt-0.42.3/test/fixture-tflint/issues-found/.tflint.hcl  
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/issues-found/.tflint.hcl  
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,5 @@
+plugin "terraform" {
+  enabled = true
+  version = "0.2.1"
+  source  = "github.com/terraform-linters/tflint-ruleset-terraform"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/issues-found/main.tf 
new/terragrunt-0.42.5/test/fixture-tflint/issues-found/main.tf
--- old/terragrunt-0.42.3/test/fixture-tflint/issues-found/main.tf      
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/issues-found/main.tf      
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,34 @@
+terraform {
+  required_providers {
+    random = {
+      version = ">= 3.4.0"
+    }
+  }
+
+  required_version = ">= 1.2.7"
+}
+
+// It's all in the same file, so tflint will return issues.
+variable "aws_region" {
+  type        = string
+  description = "The AWS region."
+}
+
+variable "env" {
+  type        = string
+  description = "The environment name."
+}
+
+
+resource "random_id" "env" {
+  byte_length = 8
+}
+
+output "aws_region" {
+  description = "The AWS region's name."
+  value       = var.aws_region
+}
+output "env" {
+  description = "The randomized environment's name."
+  value       = "${var.env}-${random_id.env.hex}"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/issues-found/terragrunt.hcl 
new/terragrunt-0.42.5/test/fixture-tflint/issues-found/terragrunt.hcl
--- old/terragrunt-0.42.3/test/fixture-tflint/issues-found/terragrunt.hcl       
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/issues-found/terragrunt.hcl       
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,13 @@
+terraform {
+  source = "."
+
+  before_hook "tflint" {
+    commands = ["apply", "plan"]
+    execute = ["tflint"]
+  }
+}
+
+inputs = {
+  aws_region = "eu-central-1"
+  env = "dev"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-config-file/main.tf 
new/terragrunt-0.42.5/test/fixture-tflint/no-config-file/main.tf
--- old/terragrunt-0.42.3/test/fixture-tflint/no-config-file/main.tf    
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-config-file/main.tf    
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,33 @@
+terraform {
+  required_providers {
+    random = {
+      version = ">= 3.4.0"
+    }
+  }
+
+  required_version = ">= 1.2.7"
+}
+
+// It's all in the same file, so tflint will return issues.
+variable "aws_region" {
+  type        = string
+  description = "The AWS region."
+}
+
+variable "env" {
+  type        = string
+  description = "The environment name."
+}
+
+resource "random_id" "env" {
+  byte_length = 8
+}
+
+output "aws_region" {
+  description = "The AWS region's name."
+  value       = var.aws_region
+}
+output "env" {
+  description = "The randomized environment's name."
+  value       = "${var.env}-${random_id.env.hex}"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-config-file/terragrunt.hcl 
new/terragrunt-0.42.5/test/fixture-tflint/no-config-file/terragrunt.hcl
--- old/terragrunt-0.42.3/test/fixture-tflint/no-config-file/terragrunt.hcl     
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-config-file/terragrunt.hcl     
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,13 @@
+terraform {
+  source = "."
+
+  before_hook "tflint" {
+    commands = ["apply", "plan"]
+    execute = ["tflint"]
+  }
+}
+
+inputs = {
+  aws_region = "eu-central-1"
+  env = "dev"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/.tflint.hcl 
new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/.tflint.hcl
--- old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/.tflint.hcl       
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/.tflint.hcl       
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,5 @@
+plugin "terraform" {
+  enabled = true
+  version = "0.2.1"
+  source  = "github.com/terraform-linters/tflint-ruleset-terraform"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/main.tf 
new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/main.tf
--- old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/main.tf   
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/main.tf   
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,14 @@
+terraform {
+  required_providers {
+    random = {
+      version = ">= 3.4.0"
+    }
+  }
+
+  required_version = ">= 1.2.7"
+}
+
+resource "random_id" "env" {
+  byte_length = 8
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/outputs.tf 
new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/outputs.tf
--- old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/outputs.tf        
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/outputs.tf        
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,8 @@
+output "aws_region" {
+  description = "The AWS region's name."
+  value       = var.aws_region
+}
+output "env" {
+  description = "The randomized environment's name."
+  value       = "${var.env}-${random_id.env.hex}"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/terragrunt.hcl 
new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/terragrunt.hcl
--- old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/terragrunt.hcl    
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/terragrunt.hcl    
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,13 @@
+terraform {
+  source = "."
+
+  before_hook "tflint" {
+    commands = ["apply", "plan"]
+    execute = ["tflint"]
+  }
+}
+
+inputs = {
+  aws_region = "eu-central-1"
+  env = "dev"
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/variables.tf 
new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/variables.tf
--- old/terragrunt-0.42.3/test/fixture-tflint/no-issues-found/variables.tf      
1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/test/fixture-tflint/no-issues-found/variables.tf      
2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,9 @@
+variable "aws_region" {
+  type        = string
+  description = "The AWS region."
+}
+
+variable "env" {
+  type        = string
+  description = "The environment name."
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/test/integration_test.go 
new/terragrunt-0.42.5/test/integration_test.go
--- old/terragrunt-0.42.3/test/integration_test.go      2022-12-02 
11:19:55.000000000 +0100
+++ new/terragrunt-0.42.5/test/integration_test.go      2022-12-14 
00:58:19.000000000 +0100
@@ -133,6 +133,9 @@
        TEST_FIXTURE_RENDER_JSON_MOCK_OUTPUTS                   = 
"fixture-render-json-mock-outputs"
        TEST_FIXTURE_STARTSWITH                                 = 
"fixture-startswith"
        TEST_FIXTURE_ENDSWITH                                   = 
"fixture-endswith"
+       TEST_FIXTURE_TFLINT_NO_ISSUES_FOUND                     = 
"fixture-tflint/no-issues-found"
+       TEST_FIXTURE_TFLINT_ISSUES_FOUND                        = 
"fixture-tflint/issues-found"
+       TEST_FIXTURE_TFLINT_NO_CONFIG_FILE                      = 
"fixture-tflint/no-config-file"
        TERRAFORM_BINARY                                        = "terraform"
        TERRAFORM_FOLDER                                        = ".terraform"
        TERRAFORM_STATE                                         = 
"terraform.tfstate"
@@ -3868,6 +3871,19 @@
        return tmpDir
 }
 
+func copyEnvironmentWithTflint(t *testing.T, environmentPath string) string {
+       tmpDir, err := ioutil.TempDir("", "terragrunt-test")
+       if err != nil {
+               t.Fatalf("Failed to create temp dir due to error: %v", err)
+       }
+
+       t.Logf("Copying %s to %s", environmentPath, tmpDir)
+
+       require.NoError(t, util.CopyFolderContents(environmentPath, 
util.JoinPath(tmpDir, environmentPath), ".terragrunt-test", 
[]string{".tflint.hcl"}))
+
+       return tmpDir
+}
+
 func copyEnvironmentToPath(t *testing.T, environmentPath, targetPath string) {
        if err := os.MkdirAll(targetPath, 0777); err != nil {
                t.Fatalf("Failed to create temp dir %s due to error %v", 
targetPath, err)
@@ -5184,3 +5200,31 @@
        require.Truef(t, hasPlatform, "Expected output %s to be defined", key)
        require.Equalf(t, output.Value, value, "Expected output %s to be %t", 
key, value)
 }
+
+func TestTflintFindsNoIssuesWithValidCode(t *testing.T) {
+       out := new(bytes.Buffer)
+       errOut := new(bytes.Buffer)
+       rootPath := copyEnvironmentWithTflint(t, 
TEST_FIXTURE_TFLINT_NO_ISSUES_FOUND)
+       modulePath := util.JoinPath(rootPath, 
TEST_FIXTURE_TFLINT_NO_ISSUES_FOUND)
+       err := runTerragruntCommand(t, fmt.Sprintf("terragrunt plan 
--terragrunt-working-dir %s", modulePath), out, errOut)
+       assert.NoError(t, err)
+
+       assert.NotContains(t, errOut.String(), "Error while running tflint with 
args:")
+       assert.NotContains(t, errOut.String(), "Tflint found issues in the 
project. Check for the tflint logs above.")
+}
+
+func TestTflintFindsIssuesWithInvalidInput(t *testing.T) {
+       errOut := new(bytes.Buffer)
+       rootPath := copyEnvironmentWithTflint(t, 
TEST_FIXTURE_TFLINT_ISSUES_FOUND)
+       modulePath := util.JoinPath(rootPath, TEST_FIXTURE_TFLINT_ISSUES_FOUND)
+       err := runTerragruntCommand(t, fmt.Sprintf("terragrunt plan 
--terragrunt-working-dir %s", modulePath), os.Stdout, errOut)
+       assert.Error(t, err, "Tflint found issues in the project. Check for the 
tflint logs")
+}
+
+func TestTflintWithoutConfigFile(t *testing.T) {
+       errOut := new(bytes.Buffer)
+       rootPath := copyEnvironmentWithTflint(t, 
TEST_FIXTURE_TFLINT_NO_CONFIG_FILE)
+       modulePath := util.JoinPath(rootPath, 
TEST_FIXTURE_TFLINT_NO_CONFIG_FILE)
+       err := runTerragruntCommand(t, fmt.Sprintf("terragrunt plan 
--terragrunt-working-dir %s", modulePath), io.Discard, errOut)
+       assert.Error(t, err, "Could not find .tflint.hcl config file in the 
parent folders:")
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/tflint/README.md 
new/terragrunt-0.42.5/tflint/README.md
--- old/terragrunt-0.42.3/tflint/README.md      1970-01-01 01:00:00.000000000 
+0100
+++ new/terragrunt-0.42.5/tflint/README.md      2022-12-14 00:58:19.000000000 
+0100
@@ -0,0 +1,4 @@
+# tflint 
+
+This package allows us to embed 
[tflint](https://github.com/terraform-linters/tflint) in Terragrunt, enabling 
it to be natively executed from the before and after hooks without having to 
install `tflint` separately. Since `tflint` is licensed with MPL, we are 
required to let you know where you can find its source code: 
https://github.com/terraform-linters/tflint.
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/tflint/tflint.go 
new/terragrunt-0.42.5/tflint/tflint.go
--- old/terragrunt-0.42.3/tflint/tflint.go      1970-01-01 01:00:00.000000000 
+0100
+++ new/terragrunt-0.42.5/tflint/tflint.go      2022-12-14 00:58:19.000000000 
+0100
@@ -0,0 +1,141 @@
+// This code embeds tflint, which is under an MPL license, and you can
+// find its source code at https://github.com/terraform-linters/tflint
+
+package tflint
+
+import (
+       "fmt"
+       "os"
+       "path/filepath"
+
+       "github.com/gruntwork-io/terragrunt/config"
+       "github.com/gruntwork-io/terragrunt/errors"
+       "github.com/gruntwork-io/terragrunt/options"
+       "github.com/gruntwork-io/terragrunt/util"
+       "github.com/terraform-linters/tflint/cmd"
+)
+
+func RunTflintWithOpts(terragruntOptions *options.TerragruntOptions, 
terragruntConfig *config.TerragruntConfig) error {
+       configFile, err := findTflintConfigInProject(terragruntOptions)
+       if err != nil {
+               return err
+       }
+       terragruntOptions.Logger.Debugf("Found .tflint.hcl file in %s", 
configFile)
+
+       variables, err := inputsToTflintVar(terragruntConfig.Inputs)
+       if err != nil {
+               return err
+       }
+
+       // Get GITHUB_OAUTH_TOKEN and set it as GITHUB_TOKEN so that tflint 
recognises and respects it
+       githubOauthToken := os.Getenv("GITHUB_OAUTH_TOKEN")
+       if githubOauthToken != "" {
+               err := os.Setenv("GITHUB_TOKEN", githubOauthToken)
+               if err != nil {
+                       return errors.WithStackTrace(err)
+               }
+
+               terragruntOptions.Logger.Debugf("Setting GITHUB_TOKEN to the 
value of GITHUB_OAUTH_TOKEN")
+       }
+
+       terragruntOptions.Logger.Debugf("Initializing tflint in directory %s", 
terragruntOptions.WorkingDir)
+       cli := cmd.NewCLI(terragruntOptions.Writer, terragruntOptions.ErrWriter)
+
+       initArgs := []string{"tflint", "--init", "--config", configFile, 
terragruntOptions.WorkingDir}
+       statusCode := cli.Run(initArgs)
+       if statusCode != 0 {
+               return errors.WithStackTrace(ErrorRunningTflint{args: initArgs})
+       }
+
+       args := []string{"tflint"}
+       args = append(args, variables...)
+       args = append(args, "--config", configFile)
+       args = append(args, "--module")
+       args = append(args, terragruntOptions.WorkingDir)
+
+       terragruntOptions.Logger.Debugf("Running tflint with args %v", args)
+       statusCode = cli.Run(args)
+
+       if statusCode == cmd.ExitCodeError {
+               return errors.WithStackTrace(ErrorRunningTflint{args: initArgs})
+       } else if statusCode == cmd.ExitCodeIssuesFound {
+               return errors.WithStackTrace(IssuesFound{})
+       } else if statusCode == cmd.ExitCodeOK {
+               terragruntOptions.Logger.Info("Tflint has run successfully. No 
issues found.")
+       } else {
+               return errors.WithStackTrace(UnknownError{statusCode: 
statusCode})
+       }
+
+       return nil
+}
+
+func inputsToTflintVar(inputs map[string]interface{}) ([]string, error) {
+       var variables []string
+       for key, value := range inputs {
+               varValue, err := util.AsTerraformEnvVarJsonValue(value)
+               if err != nil {
+                       return nil, err
+               }
+
+               newVar := fmt.Sprintf("--var=%s=%s", key, varValue)
+               variables = append(variables, newVar)
+       }
+       return variables, nil
+}
+
+// findTflintConfigInProjects looks for a .tflint.hcl file in the current 
folder or it's parents.
+func findTflintConfigInProject(terragruntOptions *options.TerragruntOptions) 
(string, error) {
+       previousDir := terragruntOptions.WorkingDir
+
+       // To avoid getting into an accidental infinite loop (e.g. do to 
cyclical symlinks), set a max on the number of
+       // parent folders we'll check
+       for i := 0; i < terragruntOptions.MaxFoldersToCheck; i++ {
+               currentDir := filepath.ToSlash(filepath.Dir(previousDir))
+               terragruntOptions.Logger.Debugf("Finding .tflint.hcl file from 
%s and going to %s", previousDir, currentDir)
+               if currentDir == previousDir {
+                       return "", errors.WithStackTrace(ConfigNotFound{cause: 
"Traversed all the day to the root"})
+               }
+
+               fileToFind := util.JoinPath(currentDir, ".tflint.hcl")
+               if util.FileExists(fileToFind) {
+                       terragruntOptions.Logger.Debugf("Found .tflint.hcl in 
%s", fileToFind)
+                       return fileToFind, nil
+               }
+
+               previousDir = currentDir
+       }
+
+       return "", errors.WithStackTrace(ConfigNotFound{cause: 
fmt.Sprintf("Exceeded maximum folders to check (%d)", 
terragruntOptions.MaxFoldersToCheck)})
+}
+
+// Custom error types
+
+type ErrorRunningTflint struct {
+       args []string
+}
+
+func (err ErrorRunningTflint) Error() string {
+       return fmt.Sprintf("Error while running tflint with args: %v", err.args)
+}
+
+type IssuesFound struct{}
+
+func (err IssuesFound) Error() string {
+       return "Tflint found issues in the project. Check for the tflint logs."
+}
+
+type UnknownError struct {
+       statusCode int
+}
+
+func (err UnknownError) Error() string {
+       return fmt.Sprintf("Unknown status code from tflint: %d", 
err.statusCode)
+}
+
+type ConfigNotFound struct {
+       cause string
+}
+
+func (err ConfigNotFound) Error() string {
+       return fmt.Sprintf("Could not find .tflint.hcl config file in the 
parent folders: %s", err.cause)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/tflint/tflint_test.go 
new/terragrunt-0.42.5/tflint/tflint_test.go
--- old/terragrunt-0.42.3/tflint/tflint_test.go 1970-01-01 01:00:00.000000000 
+0100
+++ new/terragrunt-0.42.5/tflint/tflint_test.go 2022-12-14 00:58:19.000000000 
+0100
@@ -0,0 +1,40 @@
+package tflint
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestInputsToTflintVar(t *testing.T) {
+       t.Parallel()
+
+       testCases := []struct {
+               inputs   map[string]interface{}
+               expected []string
+       }{
+               {
+                       map[string]interface{}{"region": "eu-central-1", 
"instance_count": 3},
+                       []string{"--var=region=eu-central-1", 
"--var=instance_count=3"},
+               },
+               {
+                       map[string]interface{}{"cidr_blocks": 
[]string{"10.0.0.0/16"}},
+                       []string{"--var=cidr_blocks=[\"10.0.0.0/16\"]"},
+               },
+               {
+                       map[string]interface{}{"create_resource": true},
+                       []string{"--var=create_resource=true"},
+               },
+               {
+                       // With white spaces, the string is still validated by 
tflint.
+                       map[string]interface{}{"region": " eu-central-1 "},
+                       []string{"--var=region= eu-central-1 "},
+               },
+       }
+
+       for _, testCase := range testCases {
+               actual, err := inputsToTflintVar(testCase.inputs)
+               assert.NoError(t, err)
+               assert.Equal(t, testCase.expected, actual)
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/util/jsons.go 
new/terragrunt-0.42.5/util/jsons.go
--- old/terragrunt-0.42.3/util/jsons.go 1970-01-01 01:00:00.000000000 +0100
+++ new/terragrunt-0.42.5/util/jsons.go 2022-12-14 00:58:19.000000000 +0100
@@ -0,0 +1,22 @@
+package util
+
+import (
+       "encoding/json"
+)
+
+// Convert the given value to a JSON value that can be passed to Terraform as 
an environment variable. For the most
+// part, this converts the value directly to JSON using Go's built-in 
json.Marshal. However, we have special handling
+// for strings, which with normal JSON conversion would be wrapped in quotes, 
but when passing them to Terraform via
+// env vars, we need to NOT wrap them in quotes, so this method adds special 
handling for that case.
+func AsTerraformEnvVarJsonValue(value interface{}) (string, error) {
+       switch val := value.(type) {
+       case string:
+               return val, nil
+       default:
+               envVarValue, err := json.Marshal(val)
+               if err != nil {
+                       return "", err //errors.WithStackTrace(err)
+               }
+               return string(envVarValue), nil
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/terragrunt-0.42.3/util/jsons_test.go 
new/terragrunt-0.42.5/util/jsons_test.go
--- old/terragrunt-0.42.3/util/jsons_test.go    1970-01-01 01:00:00.000000000 
+0100
+++ new/terragrunt-0.42.5/util/jsons_test.go    2022-12-14 00:58:19.000000000 
+0100
@@ -0,0 +1,25 @@
+package util
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestAsTerraformEnvVarJsonValue(t *testing.T) {
+       t.Parallel()
+
+       testCases := []struct {
+               value    interface{}
+               expected string
+       }{
+               {"aws_region", "aws_region"},
+               {[]string{"10.0.0.0/16", "10.0.0.10/16"}, 
"[\"10.0.0.0/16\",\"10.0.0.10/16\"]"},
+       }
+
+       for _, testCase := range testCases {
+               actual, err := AsTerraformEnvVarJsonValue(testCase.value)
+               assert.NoError(t, err)
+               assert.Equal(t, testCase.expected, actual)
+       }
+}

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/terragrunt/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.terragrunt.new.1835/vendor.tar.gz differ: char 5, 
line 1

Reply via email to