Comparing version 0.1.2 to 0.1.3
124
index.js
@@ -376,3 +376,3 @@ var path = require( 'path' ), | ||
// sander.copy, sander.copySync | ||
// sander.copyFile, sander.copyFileSync | ||
[ true, false ].forEach( function ( isSync ) { | ||
@@ -451,2 +451,124 @@ var qualifiedMethodName, method; | ||
// sander.copydir, sander.copydirSync | ||
[ true, false ].forEach( function ( isSync ) { | ||
var qualifiedMethodName, method; | ||
qualifiedMethodName = isSync ? 'copydirSync' : 'copydir'; | ||
method = function () { | ||
var src, readOptions, pathargs, i; | ||
if ( typeof arguments[ arguments.length - 1 ] === 'object' ) { | ||
readOptions = arguments[ arguments.length - 1 ]; | ||
i = arguments.length - 1; | ||
pathargs = []; | ||
while ( i-- ) { | ||
pathargs[i] = arguments[i]; | ||
} | ||
} else { | ||
pathargs = arguments; | ||
} | ||
src = resolve( pathargs ); | ||
return { | ||
to: function () { | ||
var dest, writeOptions, pathargs, i, copydir; | ||
if ( typeof arguments[ arguments.length - 1 ] === 'object' ) { | ||
writeOptions = arguments[ arguments.length - 1 ]; | ||
i = arguments.length - 1; | ||
pathargs = []; | ||
while ( i-- ) { | ||
pathargs[i] = arguments[i]; | ||
} | ||
} else { | ||
pathargs = arguments; | ||
} | ||
dest = resolve( pathargs ); | ||
if ( isSync ) { | ||
copydir = function ( src, dest ) { | ||
mkdirp.sync( dest ); | ||
fs.readdirSync( src ).forEach( function ( filename ) { | ||
var srcpath = src + path.sep + filename, | ||
destpath = dest + path.sep + filename; | ||
if ( fs.statSync( srcpath ).isDirectory() ) { | ||
return copydir( srcpath, destpath ); | ||
} | ||
data = fs.readFileSync( srcpath, readOptions ); | ||
fs.writeFileSync( destpath, data, writeOptions ); | ||
}); | ||
}; | ||
return copydir( src, dest ); | ||
} | ||
copydir = function ( src, dest, cb ) { | ||
mkdirp( dest, function ( err ) { | ||
if ( err ) return cb( err ); | ||
fs.readdir( src, function ( err, files ) { | ||
var remaining, | ||
check; | ||
if ( err ) return cb( err ); | ||
remaining = files.length; | ||
check = function ( err ) { | ||
if ( err ) { | ||
return cb( err ); | ||
} | ||
if ( !--remaining ) { | ||
cb(); | ||
} | ||
}; | ||
files.forEach( function ( filename ) { | ||
var srcpath = src + path.sep + filename, | ||
destpath = dest + path.sep + filename; | ||
fs.stat( srcpath, function ( err, stats ) { | ||
var readStream, writeStream; | ||
if ( stats.isDirectory() ) { | ||
return copydir( srcpath, destpath, check ); | ||
} | ||
readStream = fs.createReadStream( srcpath, readOptions ); | ||
writeStream = fs.createWriteStream( destpath, writeOptions ); | ||
readStream.on( 'error', cb ); | ||
writeStream.on( 'error', cb ); | ||
writeStream.on( 'close', check ); | ||
readStream.pipe( writeStream ); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}; | ||
return new Promise( function ( fulfil, reject ) { | ||
copydir( src, dest, function ( err ) { | ||
if ( err ) return reject( err ); | ||
fulfil(); | ||
}); | ||
}); | ||
} | ||
}; | ||
}; | ||
sander[ qualifiedMethodName ] = method; | ||
}); | ||
// sander.lsr, sander.lsrSync | ||
@@ -453,0 +575,0 @@ sander.lsr = function () { |
@@ -5,3 +5,3 @@ { | ||
"author": "Rich Harris", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"dependencies": { | ||
@@ -12,3 +12,6 @@ "es6-promise": "^1.0.0", | ||
}, | ||
"main": "lib/index.js" | ||
"main": "lib/index.js", | ||
"devDependencies": { | ||
"buffer-crc32": "^0.2.3" | ||
} | ||
} |
23612
8
607
1
3