bug fixing
This commit is contained in:
parent
e9991ed62c
commit
5b71715d88
1 changed files with 35 additions and 40 deletions
|
|
@ -120,25 +120,23 @@ exports.chmodSyncRecursive = function(sourceDir, filemode) {
|
|||
*/
|
||||
exports.rmdirRecursive = function rmdirRecursive(dir, clbk){
|
||||
fs.readdir(dir, function(err, files){
|
||||
if (err) return clbk();
|
||||
var called = 0;
|
||||
var done = function(){
|
||||
if (called == files.length)
|
||||
fs.rmdir(dir, clbk);
|
||||
else
|
||||
called++;
|
||||
};
|
||||
done();
|
||||
files.forEach(function(f){
|
||||
f = dir+f;
|
||||
fs.stat(f, function(err, stat){
|
||||
if (err) return done();
|
||||
if (err) return clbk(err);
|
||||
(function rmFile(err){
|
||||
if (err) return clbk(err);
|
||||
|
||||
var filename = files.shift();
|
||||
if (filename === null || typeof filename == 'undefined')
|
||||
return fs.rmdir(dir, clbk);
|
||||
|
||||
var file = dir+'/'+filename;
|
||||
fs.stat(file, function(err, stat){
|
||||
if (err) return clbk(err);
|
||||
if (stat.isDirectory())
|
||||
rmdirRecursive(f, done);
|
||||
rmdirRecursive(file, rmFile);
|
||||
else
|
||||
fs.unlink(f, done);
|
||||
});
|
||||
fs.unlink(file, rmFile);
|
||||
});
|
||||
})();
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -151,7 +149,7 @@ exports.rmdirRecursive = function rmdirRecursive(dir, clbk){
|
|||
*/
|
||||
exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) {
|
||||
fs.stat(newDir, function(err, newDirStat){
|
||||
if (!err) return exports.rmdirRecursive(newDir, function(){
|
||||
if (!err) return exports.rmdirRecursive(newDir, function(err){
|
||||
copyDirRecursive(srcDir, newDir, clbk);
|
||||
});
|
||||
|
||||
|
|
@ -161,32 +159,29 @@ exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) {
|
|||
if (err) return clbk(err);
|
||||
fs.readdir(srcDir, function(err, files){
|
||||
if (err) return clbk(err);
|
||||
var called = 0;
|
||||
var done = function(err){
|
||||
(function copyFiles(err){
|
||||
if (err) return clbk(err);
|
||||
if (called == files.length)
|
||||
clbk();
|
||||
else
|
||||
called++;
|
||||
};
|
||||
done();
|
||||
files.forEach(function(filename){
|
||||
|
||||
var filename = files.shift();
|
||||
if (filename === null || typeof filename == 'undefined')
|
||||
return clbk();
|
||||
|
||||
var file = srcDir+'/'+filename,
|
||||
newFile = newDir+'/'+filename,
|
||||
called = 0;
|
||||
newFile = newDir+'/'+filename;
|
||||
|
||||
fs.stat(file, function(err, fileStat){
|
||||
if (fileStat.isDirectory())
|
||||
copyDirRecursive(file, newFile, done);
|
||||
copyDirRecursive(file, newFile, copyFiles);
|
||||
else if (fileStat.isSymbolicLink())
|
||||
fs.readlink(file, function(err, link){
|
||||
fs.symlink(link, newFile, done);
|
||||
fs.symlink(link, newFile, copyFiles);
|
||||
});
|
||||
else
|
||||
fs.readFile(file, function(err, data){
|
||||
fs.writeFile(newFile, data, done);
|
||||
});
|
||||
fs.writeFile(newFile, data, copyFiles);
|
||||
});
|
||||
});
|
||||
})();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Reference in a new issue