github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/util/compress.go (about) 1 package util 2 3 import ( 4 "compress/gzip" 5 "os" 6 ) 7 8 func GzipCompress(infile string, outfile string, fmode os.FileMode) error { 9 data, err := os.ReadFile(infile) 10 if err != nil { 11 return err 12 } 13 14 handle, err := os.OpenFile(outfile, os.O_CREATE|os.O_RDWR, fmode) 15 if err != nil { 16 return err 17 } 18 defer handle.Close() 19 20 zipWriter, err := gzip.NewWriterLevel(handle, 9) 21 if err != nil { 22 return err 23 } 24 25 if _, err := zipWriter.Write(data); err != nil { 26 return err 27 } 28 if err = zipWriter.Close(); err != nil { 29 return err 30 } 31 return nil 32 }