Skip to content

Commit ef2411e

Browse files
authored
fix(provisionersdk): allow .terraform.lock.hcl files to be archived (#7604)
1 parent a29c4c5 commit ef2411e

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

provisionersdk/archive.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ func Tar(w io.Writer, directory string, limit int64) error {
7373
if err != nil {
7474
return err
7575
}
76-
if strings.HasPrefix(rel, ".") || strings.HasPrefix(filepath.Base(rel), ".") {
76+
// We want to allow .terraform.lock.hcl files to be archived. This
77+
// allows provider plugins to be cached.
78+
if (strings.HasPrefix(rel, ".") || strings.HasPrefix(filepath.Base(rel), ".")) && filepath.Base(rel) != ".terraform.lock.hcl" {
7779
if fileInfo.IsDir() && rel != "." {
7880
// Don't archive hidden files!
7981
return filepath.SkipDir

provisionersdk/archive_test.go

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"io"
66
"os"
77
"path/filepath"
8+
"strings"
89
"testing"
910

1011
"github.com/stretchr/testify/require"
@@ -39,25 +40,39 @@ func TestTar(t *testing.T) {
3940
Name string
4041
Archives bool
4142
}
42-
files := []*file{{
43-
Name: "*.tf",
44-
Archives: true,
45-
}, {
46-
Name: ".*",
47-
Archives: false,
48-
}, {
49-
Name: "./testing/.test/*.tf",
50-
Archives: false,
51-
}, {
52-
Name: "./testing/asd.*",
53-
Archives: true,
54-
}, {
55-
Name: ".terraform/.*",
56-
Archives: false,
57-
}, {
58-
Name: "example/.terraform/*",
59-
Archives: false,
60-
}}
43+
files := []*file{
44+
{
45+
Name: "*.tf",
46+
Archives: true,
47+
}, {
48+
Name: ".*",
49+
Archives: false,
50+
}, {
51+
Name: "./testing/.test/*.tf",
52+
Archives: false,
53+
}, {
54+
Name: "./testing/asd.*",
55+
Archives: true,
56+
}, {
57+
Name: ".terraform/.*",
58+
Archives: false,
59+
}, {
60+
Name: "example/.terraform/*",
61+
Archives: false,
62+
}, {
63+
Name: ".terraform.lock.hcl",
64+
Archives: true,
65+
}, {
66+
Name: "example/.terraform.lock.hcl",
67+
Archives: true,
68+
}, {
69+
Name: ".terraform/.terraform.lock.hcl",
70+
Archives: false,
71+
}, {
72+
Name: "terraform.tfstate",
73+
Archives: false,
74+
},
75+
}
6176
for _, file := range files {
6277
newDir := dir
6378
file.Name = filepath.FromSlash(file.Name)
@@ -67,11 +82,19 @@ func TestTar(t *testing.T) {
6782
require.NoError(t, err)
6883
file.Name = filepath.Base(file.Name)
6984
}
70-
tmpFile, err := os.CreateTemp(newDir, file.Name)
71-
require.NoError(t, err)
72-
_ = tmpFile.Close()
73-
file.Name, err = filepath.Rel(dir, tmpFile.Name())
74-
require.NoError(t, err)
85+
if strings.Contains(file.Name, "*") {
86+
tmpFile, err := os.CreateTemp(newDir, file.Name)
87+
require.NoError(t, err)
88+
_ = tmpFile.Close()
89+
file.Name, err = filepath.Rel(dir, tmpFile.Name())
90+
require.NoError(t, err)
91+
} else {
92+
name := filepath.Join(newDir, file.Name)
93+
err := os.WriteFile(name, []byte{}, 0o600)
94+
require.NoError(t, err)
95+
file.Name, err = filepath.Rel(dir, name)
96+
require.NoError(t, err)
97+
}
7598
}
7699
archive := new(bytes.Buffer)
77100
err := provisionersdk.Tar(archive, dir, 1024)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy