in tools/go/gozip/main.go [118:160]
func addFileToZip(zipWriter *zip.Writer, filePath, baseInZip string) error {
fileToZip, err := os.Open(filePath)
if err != nil {
return err
}
defer fileToZip.Close()
info, err := fileToZip.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
baseLength := len(baseInZip)
if !strings.HasSuffix(baseInZip, pathSeparator) {
baseLength++
}
header.Name = filePath[baseLength:]
if runtime.GOOS == "windows" {
header.Name = strings.ReplaceAll(header.Name, "\\", "/")
}
if _, ok := executablesMap[header.Name]; ok {
mod := header.Mode() | 0111
header.SetMode(mod)
}
header.Method = zip.Deflate
if !fquiet {
fmt.Printf("%s => %s\n", filePath, header.Name)
}
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
_, err = io.Copy(writer, fileToZip)
return err
}