@@ -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