in sharedlibraries/filesystem/filesystem.go [116:153]
func (h Helper) WalkAndZip(source string, z zipper.Zipper, w *zip.Writer) error {
return filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := z.FileInfoHeader(info)
if err != nil {
return err
}
header.Method = zip.Deflate
header.Name, err = filepath.Rel(filepath.Dir(source), path)
if err != nil {
return err
}
if info.IsDir() {
header.Name += "/"
}
headerWriter, err := z.CreateHeader(w, header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
f, err := h.Open(path)
if err != nil {
return err
}
defer f.Close()
_, err = h.Copy(headerWriter, f)
return err
})
}