Skip to content

Commit 48d1081

Browse files
committed
Problem: Tarball gzip at one end, not the other
Solution: Ok go extract the gzip
1 parent 102b4cf commit 48d1081

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

‎cmd/builder/generic-vaelci-start.go‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package main
22

33
import (
44
"archive/tar"
5+
"bufio"
6+
"compress/gzip"
57
"context"
68
"encoding/json"
79
"fmt"
@@ -48,7 +50,27 @@ func (g GenericBuilder) DetermineSpecificBuildFlow(ctx context.Context, input Wo
4850
defer resp.Body.Close()
4951

5052
// Read the tarball and look for .vaelci.json
51-
tr := tar.NewReader(resp.Body)
53+
bufReader := bufio.NewReader(resp.Body)
54+
peek, err := bufReader.Peek(2)
55+
if err != nil {
56+
return VaelCiConfig{}, fmt.Errorf("failed to peek at tarball: %w", err)
57+
}
58+
59+
var reader io.Reader
60+
if peek[0] == 0x1f && peek[1] == 0x8b {
61+
logger.Info("Tarball is gzip compressed")
62+
gr, err := gzip.NewReader(bufReader)
63+
if err != nil {
64+
return VaelCiConfig{}, fmt.Errorf("failed to create gzip reader: %w", err)
65+
}
66+
defer gr.Close()
67+
reader = gr
68+
} else {
69+
logger.Info("Tarball is not gzip compressed")
70+
reader = bufReader
71+
}
72+
73+
tr := tar.NewReader(reader)
5274
for {
5375
header, err := tr.Next()
5476
if err == io.EOF {

0 commit comments

Comments
 (0)