Comparing version 1.0.0 to 1.1.0
/* wrench.js | ||
* | ||
* | ||
* A collection of various utility functions I've found myself in need of | ||
@@ -19,3 +19,3 @@ * for use with Node.js (http://nodejs.org/). This includes things like: | ||
/* wrench.rmdirSyncRecursive("directory_path"); | ||
* | ||
* | ||
* Recursively dives through directories and obliterates everything about it. This is a | ||
@@ -32,3 +32,3 @@ * Sync-function, which blocks things until it's done. No idea why anybody would want an | ||
var currFile = fs.statSync(currDir + "/" + files[i]); | ||
if(currFile.isDirectory()) // Recursive function back to the beginning | ||
@@ -116,1 +116,77 @@ exports.rmdirSyncRecursive(currDir + "/" + files[i]); | ||
}; | ||
/* wrench.rmdirRecursive("directory_path", callback); | ||
* | ||
* Recursively dives through directories and obliterates everything about it. | ||
*/ | ||
exports.rmdirRecursive = function rmdirRecursive(dir, clbk){ | ||
fs.readdir(dir, function(err, files){ | ||
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(file, rmFile); | ||
else | ||
fs.unlink(file, rmFile); | ||
}); | ||
})(); | ||
}); | ||
}; | ||
/* wrench.copyDirRecursive("directory_to_copy", "new_location", callback); | ||
* | ||
* Recursively dives through a directory and moves all its files to a new | ||
* location. | ||
* | ||
* Note: Directories should be passed to this function without a trailing slash. | ||
*/ | ||
exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) { | ||
fs.stat(newDir, function(err, newDirStat){ | ||
if (!err) return exports.rmdirRecursive(newDir, function(err){ | ||
copyDirRecursive(srcDir, newDir, clbk); | ||
}); | ||
fs.stat(srcDir, function(err, srcDirStat){ | ||
if (err) return clbk(err); | ||
fs.mkdir(newDir, srcDirStat.mode, function(err){ | ||
if (err) return clbk(err); | ||
fs.readdir(srcDir, function(err, files){ | ||
if (err) return clbk(err); | ||
(function copyFiles(err){ | ||
if (err) return clbk(err); | ||
var filename = files.shift(); | ||
if (filename === null || typeof filename == 'undefined') | ||
return clbk(); | ||
var file = srcDir+'/'+filename, | ||
newFile = newDir+'/'+filename; | ||
fs.stat(file, function(err, fileStat){ | ||
if (fileStat.isDirectory()) | ||
copyDirRecursive(file, newFile, copyFiles); | ||
else if (fileStat.isSymbolicLink()) | ||
fs.readlink(file, function(err, link){ | ||
fs.symlink(link, newFile, copyFiles); | ||
}); | ||
else | ||
fs.readFile(file, function(err, data){ | ||
fs.writeFile(newFile, data, copyFiles); | ||
}); | ||
}); | ||
})(); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}; |
{ | ||
"name": "wrench", | ||
"description": "Recursive filesystem operations that Node *should* have.", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"author": "Ryan McGrath <ryan@venodesigns.net>", | ||
@@ -6,0 +6,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10677
162