diff --git a/internal/util/io.go b/internal/util/io.go index 42ac50b4..b42481d7 100644 --- a/internal/util/io.go +++ b/internal/util/io.go @@ -123,20 +123,17 @@ func ZipDir(dir string, outfilename string, opts ...ZipDirCallbackMatcher) error if err != nil { return fmt.Errorf("error getting relative path: %s. %w", file, err) } - rf, err := os.Open(file) - if err != nil { - return fmt.Errorf("error opening file: %s. %w", file, err) + if !Exists(file) { + continue } - defer rf.Close() if len(opts) > 0 { - fi, err := rf.Stat() + fi, err := os.Stat(file) if err != nil { return fmt.Errorf("error getting file info: %s. %w", file, err) } var notok bool for _, opt := range opts { if !opt(fn, fi) { - rf.Close() notok = true break } @@ -145,6 +142,11 @@ func ZipDir(dir string, outfilename string, opts ...ZipDirCallbackMatcher) error continue } } + rf, err := os.Open(file) + if err != nil { + return fmt.Errorf("error opening file: %s. %w", file, err) + } + defer rf.Close() w, err := zw.Create(fn) if err != nil { return fmt.Errorf("error creating file: %s. %w", fn, err)