Skip to content

Commit 75c0e86

Browse files
committed
fix(generator): only compress the prepared files
1 parent 9d177a3 commit 75c0e86

File tree

1 file changed

+18
-51
lines changed

1 file changed

+18
-51
lines changed

cmd/generator/main.go

Lines changed: 18 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ func run(ctx context.Context) (err error) {
7272
}
7373

7474
// Create root directory in which to export OCI recipes
75-
_ = os.Mkdir(dist, os.ModePerm)
75+
if err := os.Mkdir(dist, os.ModePerm); err != nil {
76+
return err
77+
}
7678

7779
ver := os.Getenv("VERSION")
7880

@@ -278,66 +280,31 @@ func compress(path, target string) error {
278280
gzipWriter := gzip.NewWriter(tarfile)
279281
tarWriter := tar.NewWriter(gzipWriter)
280282

281-
dir := filepath.Join(path, dist)
282-
err = filepath.Walk(dir, func(file string, fi os.FileInfo, err error) error {
283+
// Compress the prepared files
284+
for _, pf := range preparedFiles {
285+
fpath := filepath.Join(path, pf)
286+
287+
f, err := os.Open(fpath)
283288
if err != nil {
284289
return err
285290
}
286-
287-
// Compute the relative path from the source directory
288-
relPath, err := filepath.Rel(dir, file)
289-
if err != nil {
291+
if _, err := io.Copy(tarWriter, f); err != nil {
292+
_ = f.Close()
290293
return err
291294
}
295+
_ = f.Close()
292296

293-
// Ensure we skip the root directory
294-
if relPath == "." {
295-
return nil
297+
fi, err := os.Stat(fpath)
298+
if err != nil {
299+
return err
296300
}
297-
298-
// Open file if it's not a directory
299-
var fileReader io.Reader
300-
var fileHeader *tar.Header
301-
302-
if fi.Mode().IsRegular() {
303-
f, err := os.Open(file)
304-
if err != nil {
305-
return err
306-
}
307-
defer f.Close()
308-
fileReader = f
309-
310-
fileHeader, err = tar.FileInfoHeader(fi, "")
311-
if err != nil {
312-
return err
313-
}
314-
fileHeader.Name = relPath
315-
} else if fi.IsDir() {
316-
fileHeader = &tar.Header{
317-
Name: relPath + "/",
318-
Typeflag: tar.TypeDir,
319-
Mode: int64(fi.Mode()),
320-
ModTime: fi.ModTime(),
321-
}
322-
} else {
323-
// Ignore symlinks, devices, etc.
324-
return nil
301+
fileHeader, err := tar.FileInfoHeader(fi, "")
302+
if err != nil {
303+
return err
325304
}
326-
327305
if err := tarWriter.WriteHeader(fileHeader); err != nil {
328-
return fmt.Errorf("failed to write tar header: %w", err)
329-
}
330-
331-
if fileReader != nil {
332-
if _, err := io.Copy(tarWriter, fileReader); err != nil {
333-
return fmt.Errorf("failed to write file data: %w", err)
334-
}
306+
return fmt.Errorf("failed to write tar header")
335307
}
336-
337-
return nil
338-
})
339-
if err != nil {
340-
return errors.Wrapf(err, "creating tar.gz %s", target)
341308
}
342309

343310
// Close all writers and file

0 commit comments

Comments
 (0)