diff --git a/all_test.go b/all_test.go index 13bae07..4b24aac 100644 --- a/all_test.go +++ b/all_test.go @@ -50,7 +50,7 @@ func TestCopy(t *testing.T) { When(t, "specified src is just a file", func(t *testing.T) { err := Copy("test/data/case01/README.md", "test/data.copy/case01/README.md") Expect(t, err).ToBe(nil) - content, err := ioutil.ReadFile("test/data.copy/case01/README.md") + content, err := os.ReadFile("test/data.copy/case01/README.md") Expect(t, err).ToBe(nil) Expect(t, string(content)).ToBe("case01 - README.md") }) diff --git a/copy.go b/copy.go index 2979af9..4d3ad18 100644 --- a/copy.go +++ b/copy.go @@ -4,7 +4,6 @@ import ( "context" "io" "io/fs" - "io/ioutil" "os" "path/filepath" "time" @@ -167,28 +166,29 @@ func dcopy(srcdir, destdir string, info os.FileInfo, opt Options) (err error) { } defer chmodfunc(&err) - var contents []os.FileInfo + var entries []fs.DirEntry if opt.FS != nil { - entries, err := fs.ReadDir(opt.FS, srcdir) + entries, err = fs.ReadDir(opt.FS, srcdir) if err != nil { return err } - for _, e := range entries { - info, err := e.Info() - if err != nil { - return err + } else { + entries, err = os.ReadDir(srcdir) + if err != nil { + if os.IsNotExist(err) { + return nil } - contents = append(contents, info) + return err } - } else { - contents, err = ioutil.ReadDir(srcdir) } - if err != nil { - if os.IsNotExist(err) { - return nil + contents := make([]fs.FileInfo, 0, len(entries)) + for _, e := range entries { + info, err := e.Info() + if err != nil { + return err } - return + contents = append(contents, info) } if yes, err := shouldCopyDirectoryConcurrent(opt, srcdir, destdir); err != nil {