MCPcopy Create free account
hub / github.com/aws-cloudformation/rain / zipPath

Function zipPath

cft/pkg/util.go:52–111  ·  view source on GitHub ↗
(root string)

Source from the content-addressed store, hash-verified

50var uploads = map[string]*s3Path{}
51
52func zipPath(root string) (string, error) {
53 tmpFile, err := os.CreateTemp(os.TempDir(), "*.zip")
54 if err != nil {
55 return "", err
56 }
57 defer tmpFile.Close()
58
59 w := zip.NewWriter(tmpFile)
60 defer w.Close()
61
62 zRoot := root
63 info, err := os.Stat(zRoot)
64 if err != nil {
65 return "", err
66 }
67 if !info.IsDir() {
68 zRoot = filepath.Dir(zRoot)
69 }
70
71 err = filepath.Walk(root, func(path string, info fs.FileInfo, err error) error {
72 if err != nil {
73 return err
74 }
75
76 if !info.Mode().IsRegular() {
77 return nil
78 }
79
80 in, err := os.Open(path)
81 if err != nil {
82 return err
83 }
84 defer in.Close()
85
86 zPath, err := filepath.Rel(zRoot, path)
87 if err != nil {
88 return err
89 }
90
91 zPath = filepath.ToSlash(zPath)
92
93 fh, err := zip.FileInfoHeader(info)
94 if err != nil {
95 return err
96 }
97
98 fh.Name = zPath
99 fh.Method = zip.Deflate
100
101 out, err := w.CreateHeader(fh)
102 if err != nil {
103 return err
104 }
105
106 _, err = io.Copy(out, in)
107 return err
108 })
109

Callers 1

uploadFunction · 0.85

Calls 1

ModeMethod · 0.65

Tested by

no test coverage detected