@@ -49,17 +49,6 @@ function checkParentDir (resolvedDest, src, dest, opts, cb) {
4949}
5050
5151function startCopy ( resolvedDest , src , dest , opts , cb ) {
52- // resovledDest is only truthy in the first call of startCopy.
53- // when copying directory items, startCopy is called recursively and
54- // resolvedDest is null, so we need to check paths in that case.
55- if ( resolvedDest ) return resumeCopy ( resolvedDest , src , dest , opts , cb )
56- return checkPaths ( src , dest , ( err , resolvedDest ) => {
57- if ( err ) return cb ( err )
58- return resumeCopy ( resolvedDest , src , dest , opts , cb )
59- } )
60- }
61-
62- function resumeCopy ( resolvedDest , src , dest , opts , cb ) {
6352 if ( opts . filter ) return handleFilter ( getStats , resolvedDest , src , dest , opts , cb )
6453 return getStats ( resolvedDest , src , dest , opts , cb )
6554}
@@ -179,9 +168,18 @@ function copyDir (src, dest, opts, cb) {
179168function copyDirItems ( items , src , dest , opts , cb ) {
180169 const item = items . pop ( )
181170 if ( ! item ) return cb ( )
182- startCopy ( null , path . join ( src , item ) , path . join ( dest , item ) , opts , err => {
171+ return copyDirItem ( items , item , src , dest , opts , cb )
172+ }
173+
174+ function copyDirItem ( items , item , src , dest , opts , cb ) {
175+ const srcItem = path . join ( src , item )
176+ const destItem = path . join ( dest , item )
177+ checkPaths ( srcItem , destItem , ( err , resolvedDest ) => {
183178 if ( err ) return cb ( err )
184- return copyDirItems ( items , src , dest , opts , cb )
179+ startCopy ( resolvedDest , srcItem , destItem , opts , err => {
180+ if ( err ) return cb ( err )
181+ return copyDirItems ( items , src , dest , opts , cb )
182+ } )
185183 } )
186184}
187185
0 commit comments