@@ -192,10 +192,14 @@ func archivePath(out string, manifest []manifestEntry) (err error) {
192192
193193 return nil
194194 }
195+ createDir := func (_ string ) error {
196+ // Directories are created automatically in ZIP files.
197+ return nil
198+ }
195199
196200 for _ , entry := range manifest {
197201 src := abs (filepath .FromSlash (entry .Src ))
198- if err := copyRecursively (src , entry .Dst , writeFile , func ( _ string ) error { return nil } ); err != nil {
202+ if err := copyRecursively (src , entry .Dst , writeFile , createDir ); err != nil {
199203 return err
200204 }
201205 }
@@ -207,6 +211,12 @@ func archivePath(out string, manifest []manifestEntry) (err error) {
207211}
208212
209213func copyPath (out string , manifest []manifestEntry ) error {
214+ const dirMode = 0777
215+
216+ if err := os .MkdirAll (out , dirMode ); err != nil {
217+ return err
218+ }
219+
210220 writeFile := func (src , dst string ) error {
211221 srcFile , err := os .Open (src )
212222 if err != nil {
@@ -229,17 +239,18 @@ func copyPath(out string, manifest []manifestEntry) error {
229239
230240 return nil
231241 }
242+ createDir := func (dst string ) error {
243+ return os .Mkdir (dst , dirMode )
244+ }
232245
233246 for _ , entry := range manifest {
234247 dst := abs (filepath .Join (out , filepath .FromSlash (entry .Dst )))
235- if err := os .MkdirAll (filepath .Dir (dst ), 0777 ); err != nil {
248+ if err := os .MkdirAll (filepath .Dir (dst ), dirMode ); err != nil {
236249 return err
237250 }
238251
239252 src := abs (filepath .FromSlash (entry .Src ))
240- if err := copyRecursively (src , dst , writeFile , func (dst string ) error {
241- return os .Mkdir (dst , 0777 )
242- }); err != nil {
253+ if err := copyRecursively (src , dst , writeFile , createDir ); err != nil {
243254 return err
244255 }
245256 }
0 commit comments