Skip to content

Commit c354032

Browse files
committed
dir weirdness
1 parent b8d69be commit c354032

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

provisioner/terraform/modules.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"archive/tar"
55
"bytes"
66
"encoding/json"
7+
"io"
78
"io/fs"
89
"os"
910
"path/filepath"
@@ -97,27 +98,28 @@ func getModulesArchive(root fs.FS) ([]byte, error) {
9798
if err != nil {
9899
return xerrors.Errorf("failed to create modules archive: %w", err)
99100
}
100-
if info.IsDir() {
101+
if !info.Type().IsRegular() {
101102
return nil
102103
}
103-
104-
content, err := fs.ReadFile(root, filePath)
104+
fi, err := info.Info()
105105
if err != nil {
106-
return xerrors.Errorf("failed to read module file while archiving: %w", err)
106+
return xerrors.Errorf("failed to archive module %q file: %w", it.Key, err)
107+
}
108+
header, err := tar.FileInfoHeader(fi, info.Name())
109+
if err != nil {
110+
return xerrors.Errorf("failed to archive module %q file: %w", it.Key, err)
107111
}
112+
108113
empty = false
109-
err = w.WriteHeader(&tar.Header{
110-
Name: filePath,
111-
Size: int64(len(content)),
112-
Mode: 0o644,
113-
Uid: 1000,
114-
Gid: 1000,
115-
})
114+
err = w.WriteHeader(header)
116115
if err != nil {
117116
return xerrors.Errorf("failed to add module file to archive: %w", err)
118117
}
119-
if _, err = w.Write(content); err != nil {
120-
return xerrors.Errorf("failed to write module file to archive: %w", err)
118+
119+
file, err := root.Open(filePath)
120+
_, err = io.Copy(w, file)
121+
if err != nil {
122+
return xerrors.Errorf("failed to read module file while archiving: %w", err)
121123
}
122124
return nil
123125
})

provisioner/terraform/modules_internal_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"crypto/sha256"
66
"encoding/hex"
7+
"fmt"
78
"io/fs"
89
"os"
910
"path/filepath"
@@ -37,6 +38,12 @@ func TestGetModulesArchive(t *testing.T) {
3738
require.NoError(t, err)
3839
require.True(t, strings.HasPrefix(string(content), `{"Modules":[{"Key":"","Source":"","Dir":"."},`))
3940

41+
a, err := fs.ReadDir(tarfs, ".terraform/modules/example_module")
42+
require.NoError(t, err)
43+
for _, it := range a {
44+
fmt.Println("-", it.Name())
45+
}
46+
4047
content, err = fs.ReadFile(tarfs, ".terraform/modules/example_module/main.tf")
4148
require.NoError(t, err)
4249
require.True(t, strings.HasPrefix(string(content), "terraform {"))

0 commit comments

Comments
 (0)