gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/helpers/archives/gzip_create.go (about)

     1  package archives
     2  
     3  import (
     4  	"compress/gzip"
     5  	"fmt"
     6  	"io"
     7  	"os"
     8  
     9  	"github.com/sirupsen/logrus"
    10  )
    11  
    12  func writeGzipFile(w io.Writer, fileName string, fileInfo os.FileInfo) error {
    13  	if !fileInfo.Mode().IsRegular() {
    14  		return fmt.Errorf("the %q is not a regular file", fileName)
    15  	}
    16  
    17  	gz := gzip.NewWriter(w)
    18  	gz.Header.Name = fileInfo.Name()
    19  	gz.Header.Comment = fileName
    20  	gz.Header.ModTime = fileInfo.ModTime()
    21  	defer gz.Close()
    22  
    23  	file, err := os.Open(fileName)
    24  	if err != nil {
    25  		return err
    26  	}
    27  	defer file.Close()
    28  
    29  	_, err = io.Copy(gz, file)
    30  	return err
    31  }
    32  
    33  func CreateGzipArchive(w io.Writer, fileNames []string) error {
    34  	for _, fileName := range fileNames {
    35  		fi, err := os.Lstat(fileName)
    36  		if os.IsNotExist(err) {
    37  			logrus.Warningln("File ignored:", err)
    38  			continue
    39  		} else if err != nil {
    40  			return err
    41  		}
    42  
    43  		err = writeGzipFile(w, fileName, fi)
    44  		if err != nil {
    45  			return err
    46  		}
    47  	}
    48  
    49  	return nil
    50  }