github.com/nilium/gitlab-runner@v12.5.0+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 }