MCPcopy
hub / github.com/cloudfoundry/cli / zipit

Function zipit

cf/appfiles/zipper_test.go:30–85  ·  view source on GitHub ↗

Thanks to Svett Ralchev http://blog.ralch.com/tutorial/golang-working-with-zip/

(source, target, prefix string)

Source from the content-addressed store, hash-verified

28// Thanks to Svett Ralchev
29// http://blog.ralch.com/tutorial/golang-working-with-zip/
30func zipit(source, target, prefix string) error {
31 zipfile, err := os.Create(target)
32 if err != nil {
33 return err
34 }
35 defer zipfile.Close()
36
37 if prefix != "" {
38 _, err = io.WriteString(zipfile, prefix)
39 if err != nil {
40 return err
41 }
42 }
43
44 archive := zip.NewWriter(zipfile)
45 defer archive.Close()
46
47 err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
48 if err != nil {
49 return err
50 }
51
52 header, err := zip.FileInfoHeader(info)
53 if err != nil {
54 return err
55 }
56
57 header.Name = strings.TrimPrefix(path, source)
58
59 if info.IsDir() {
60 header.Name += string(os.PathSeparator)
61 } else {
62 header.Method = zip.Deflate
63 }
64
65 writer, err := archive.CreateHeader(header)
66 if err != nil {
67 return err
68 }
69
70 if info.IsDir() {
71 return nil
72 }
73
74 file, err := os.Open(path)
75 if err != nil {
76 return err
77 }
78 defer file.Close()
79
80 _, err = io.Copy(writer, file)
81 return err
82 })
83
84 return err
85}
86
87func readFileInZip(index int, reader *zip.Reader) (string, string) {

Callers 1

zipper_test.goFile · 0.70

Calls 3

IsDirMethod · 0.80
CreateMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected