Skip to content

Commit

Permalink
feat(tmc): add sync of JSON plan with --cloud-sync-terraform-plan-file
Browse files Browse the repository at this point in the history
Signed-off-by: Tiago Natel <t.nateldemoura@gmail.com>
  • Loading branch information
i4ki committed Oct 7, 2023
1 parent 376be70 commit f2ec19d
Show file tree
Hide file tree
Showing 9 changed files with 956 additions and 26 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ Given a version number `MAJOR.MINOR.PATCH`, we increment the:

## Unreleased

### Added

- Add `--cloud-sync-terraform-plan-file=<plan>` flag for synchronizing the plan
file in rendered ASCII and JSON (sensitive information removed).

## 0.4.2

### Added
Expand Down
72 changes: 60 additions & 12 deletions cmd/terramate/cli/cloud_sync_drift.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@ package cli
import (
"bytes"
"context"
"encoding/json"
"os/exec"
"path/filepath"
"time"

tfjson "github.com/hashicorp/terraform-json"
"github.com/hashicorp/terraform-json/sanitize"
"github.com/rs/zerolog/log"
"github.com/terramate-io/terramate/cloud"
"github.com/terramate-io/terramate/cloud/stack"
Expand Down Expand Up @@ -92,30 +95,75 @@ func (c *cli) getTerraformDriftDetails(runContext ExecContext, planfile string)
return nil, errors.E(clitest.ErrCloudInvalidTerraformPlanFilePath, "path must be relative to the running stack")
}

renderedPlan, err := c.runTerraformShow(runContext, planfile, "-no-color")
if err != nil {
return nil, err
}

Check warning on line 101 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L98-L101

Added lines #L98 - L101 were not covered by tests

jsonPlanData, err := c.runTerraformShow(runContext, planfile, "-no-color", "-json")
if err != nil {
return nil, err
}

Check warning on line 106 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L103-L106

Added lines #L103 - L106 were not covered by tests

var oldPlan tfjson.Plan
err = json.Unmarshal([]byte(jsonPlanData), &oldPlan)
if err != nil {
return nil, errors.E(err, "unmarshaling Terraform JSON plan")
}

Check warning on line 112 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L108-L112

Added lines #L108 - L112 were not covered by tests

newPlan, err := sanitize.SanitizePlan(&oldPlan)
if err != nil {
return nil, errors.E(err, "failed to sanitize Terraform JSON plan")
}

Check warning on line 117 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L114-L117

Added lines #L114 - L117 were not covered by tests

// unset the config as it could still contain unredacted sensitive values.
newPlan.Config = nil

newPlanData, err := json.Marshal(newPlan)
if err != nil {
return nil, errors.E(err, "failed to marshal sanitized Terraform JSON plan")
}

Check warning on line 125 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L120-L125

Added lines #L120 - L125 were not covered by tests

logger.Trace().Msg("drift details gathered successfully")

return &cloud.DriftDetails{
Provisioner: "terraform",
ChangesetASCII: renderedPlan,
ChangesetJSON: string(newPlanData),
}, nil

Check warning on line 133 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L127-L133

Added lines #L127 - L133 were not covered by tests
}

func (c *cli) runTerraformShow(runContext ExecContext, planfile string, flags ...string) (string, error) {

Check warning on line 136 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L136

Added line #L136 was not covered by tests
var stdout, stderr bytes.Buffer

const tfShowTimeout = 5 * time.Second
args := []string{
"show",
}
args = append(args, flags...)
args = append(args, planfile)

Check warning on line 143 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L139-L143

Added lines #L139 - L143 were not covered by tests

const tfShowTimeout = 5 * time.Second

Check warning on line 145 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L145

Added line #L145 was not covered by tests
ctx, cancel := context.WithTimeout(context.Background(), tfShowTimeout)
defer cancel()

cmd := exec.CommandContext(ctx, "terraform", "show", "-no-color", planfile)
cmd := exec.CommandContext(ctx, "terraform", args...)

Check warning on line 149 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L149

Added line #L149 was not covered by tests
cmd.Dir = runContext.Stack.Dir.HostPath(c.rootdir())
cmd.Stdout = &stdout
cmd.Stderr = &stderr

logger.Trace().Msgf("executing %s", cmd.String())
logger := log.With().
Str("action", "runTerraformShow").
Str("planfile", planfile).
Stringer("stack", runContext.Stack.Dir).
Str("command", cmd.String()).
Logger()

logger.Trace().Msg("executing")

Check warning on line 161 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L154-L161

Added lines #L154 - L161 were not covered by tests
err := cmd.Run()
if err != nil {
logger.Debug().Str("stderr", stderr.String()).Msg("command stderr")

return nil, errors.E(clitest.ErrCloudTerraformPlanFile, "executing: %s", cmd.String())
logger.Error().Str("stderr", stderr.String()).Msg("command stderr")
return "", errors.E(clitest.ErrCloudTerraformPlanFile, "executing: %s", cmd.String())

Check warning on line 165 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L164-L165

Added lines #L164 - L165 were not covered by tests
}

logger.Trace().Msg("drift details gathered successfully")

return &cloud.DriftDetails{
Provisioner: "terraform",
ChangesetASCII: stdout.String(),
}, nil
return stdout.String(), nil

Check warning on line 168 in cmd/terramate/cli/cloud_sync_drift.go

View check run for this annotation

Codecov / codecov/patch

cmd/terramate/cli/cloud_sync_drift.go#L168

Added line #L168 was not covered by tests
}
1 change: 1 addition & 0 deletions cmd/terramate/e2etests/_testdata/sanitized.plan.json

Large diffs are not rendered by default.

841 changes: 841 additions & 0 deletions cmd/terramate/e2etests/_testdata/unsanitized.plan.json

Large diffs are not rendered by default.

20 changes: 16 additions & 4 deletions cmd/terramate/e2etests/cmd/test/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@ import (
"github.com/terramate-io/terramate/errors"
)

const envNameShowASCII = "TM_TEST_TERRAFORM_SHOW_ASCII_OUTPUT"
const (
envNameShowASCII = "TM_TEST_TERRAFORM_SHOW_ASCII_OUTPUT"
envNameShowJSON = "TM_TEST_TERRAFORM_SHOW_JSON_OUTPUT"
)

func terraform() {
switch os.Args[1] {
case "show":
fs := flag.NewFlagSet("terraform show", flag.ExitOnError)
_ = fs.Bool("no-color", false, "-no-color (ignored)")
isJSON := fs.Bool("json", false, "outputs a json")
err := fs.Parse(os.Args[2:])
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", err)
Expand All @@ -41,9 +45,17 @@ func terraform() {

// file exists but ignore it

output := os.Getenv(envNameShowASCII)
if output == "" {
panic(errors.E("please set %s", envNameShowASCII))
var output string
if !*isJSON {
output = os.Getenv(envNameShowASCII)
if output == "" {
panic(errors.E("please set %s", envNameShowASCII))
}
} else {
output = os.Getenv(envNameShowJSON)
if output == "" {
panic(errors.E("please set %s", envNameShowJSON))
}
}
fmt.Print(output)
default:
Expand Down
13 changes: 13 additions & 0 deletions cmd/terramate/e2etests/run_cloud_drift_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package e2etest

import (
"bytes"
"context"
"fmt"
"os"
Expand Down Expand Up @@ -34,11 +35,19 @@ func TestCLIRunWithCloudSyncDriftStatus(t *testing.T) {
workingDir string
cmd []string
driftDetailASCII string
driftDetailJSON string
want want
}

const testPlanASCII = "here goes the terraform plan output\n"

testUnsanitizedPlanJSON, err := os.ReadFile("_testdata/unsanitized.plan.json")
assert.NoError(t, err)
testSanitizedPlanJSON, err := os.ReadFile("_testdata/sanitized.plan.json")
assert.NoError(t, err)

testSanitizedPlanJSON = bytes.TrimSpace(testSanitizedPlanJSON)

absPlanFilePath := test.WriteFile(t, t.TempDir(), "out.tfplan", ``)

for _, tc := range []testcase{
Expand Down Expand Up @@ -324,6 +333,7 @@ func TestCLIRunWithCloudSyncDriftStatus(t *testing.T) {
},
cmd: []string{testHelperBin, "exit", "2"},
driftDetailASCII: testPlanASCII,
driftDetailJSON: string(testUnsanitizedPlanJSON),
want: want{
run: runExpected{},
drifts: cloud.DriftStackPayloadRequests{
Expand All @@ -338,6 +348,7 @@ func TestCLIRunWithCloudSyncDriftStatus(t *testing.T) {
Details: &cloud.DriftDetails{
Provisioner: "terraform",
ChangesetASCII: testPlanASCII,
ChangesetJSON: string(testSanitizedPlanJSON),
},
},
{
Expand All @@ -351,6 +362,7 @@ func TestCLIRunWithCloudSyncDriftStatus(t *testing.T) {
Details: &cloud.DriftDetails{
Provisioner: "terraform",
ChangesetASCII: testPlanASCII,
ChangesetJSON: string(testSanitizedPlanJSON),
},
},
},
Expand All @@ -369,6 +381,7 @@ func TestCLIRunWithCloudSyncDriftStatus(t *testing.T) {

env := removeEnv(os.Environ(), "CI", "GITHUB_ACTIONS")
env = append(env, `TM_TEST_TERRAFORM_SHOW_ASCII_OUTPUT=`+tc.driftDetailASCII)
env = append(env, `TM_TEST_TERRAFORM_SHOW_JSON_OUTPUT=`+tc.driftDetailJSON)
cli := newCLI(t, filepath.Join(s.RootDir(), filepath.FromSlash(tc.workingDir)), env...)
cli.prependToPath(filepath.Dir(testHelperBin))
runflags := []string{"run", "--cloud-sync-drift-status"}
Expand Down
10 changes: 6 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,19 @@ require (
github.com/go-git/go-git/v5 v5.4.2
github.com/go-test/deep v1.1.0
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/google/go-cmp v0.5.6
github.com/hashicorp/go-version v1.3.0
github.com/google/go-cmp v0.5.9
github.com/hashicorp/go-version v1.6.0
github.com/hashicorp/hcl/v2 v2.14.1
github.com/hashicorp/terraform v0.15.3
github.com/hashicorp/terraform-json v0.17.1
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95
github.com/julienschmidt/httprouter v1.3.0
github.com/madlambda/spells v0.4.2
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
github.com/posener/complete v1.2.3
github.com/terramate-io/go-checkpoint v1.0.0
github.com/willabides/kongplete v0.2.0
github.com/zclconf/go-cty v1.8.3
github.com/zclconf/go-cty v1.13.2
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b
go.lsp.dev/jsonrpc2 v0.10.0
go.lsp.dev/protocol v0.12.0
Expand All @@ -37,13 +38,14 @@ require (
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/segmentio/asm v1.1.3 // indirect
github.com/segmentio/encoding v0.3.4 // indirect
go.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.21.0 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Expand Down
19 changes: 13 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,8 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/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.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
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=
Expand Down Expand Up @@ -302,8 +302,8 @@ github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09
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/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
Expand All @@ -317,6 +317,8 @@ github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZa
github.com/hashicorp/terraform v0.15.3 h1:2QWbTj2xJ/8W1gCyIrd0WAqVF4weKPMYjx8nKjbkQjA=
github.com/hashicorp/terraform v0.15.3/go.mod h1:w4eBEsluZfYumXUTLe834eqHh969AabcLqbj2WAYlM8=
github.com/hashicorp/terraform-config-inspect v0.0.0-20210209133302-4fd17a0faac2/go.mod h1:Z0Nnk4+3Cy89smEbrq+sl1bxc9198gIP4I7wcQF6Kqs=
github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA=
github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o=
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/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
Expand Down Expand Up @@ -402,6 +404,8 @@ github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nr
github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
Expand All @@ -417,6 +421,8 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh
github.com/mitchellh/panicwrap v1.0.0/go.mod h1:pKvZHwWrZowLUzftuFq7coarnxbBXU4aQh3N0BJOeeA=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
Expand Down Expand Up @@ -466,6 +472,7 @@ github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sebdah/goldie v1.0.0 h1:9GNhIat69MSlz/ndaBg48vl9dF5fI+NBB6kfOxgfkMc=
github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc=
github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
github.com/segmentio/encoding v0.3.4 h1:WM4IBnxH8B9TakiM2QD5LyNl9JSndh88QbHqVC+Pauc=
Expand Down Expand Up @@ -519,8 +526,9 @@ github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLE
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.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0=
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI=
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=
Expand Down Expand Up @@ -783,7 +791,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
Expand Down
1 change: 1 addition & 0 deletions makefiles/unix.mk
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ test/fakecloud:
.PHONY: test/helper
test/helper:
go build -o bin/helper ./cmd/terramate/e2etests/cmd/test
cp bin/helper bin/terraform

## test code
.PHONY: test
Expand Down

0 comments on commit f2ec19d

Please sign in to comment.