Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Iterate all the files
var fs = require("fs"),
path = require("path");
function iterateFiles(uri, callback, done, fileRegexp) {
var counter = 1
fs.readdir(uri, errorProxy(done, readFiles))
function readFiles(err, files) {
counter += files.length
files.forEach(isDirOrFile)
next()
}
function isDirOrFile(fileName) {
fileName = path.join(uri, fileName)
fs.stat(fileName, errorProxy(done, readOrRecurse))
function readOrRecurse(err, stat) {
if (stat.isDirectory()) {
iterateFiles(fileName, callback, errorProxy(done, next), fileRegexp)
} else if (stat.isFile() && (!fileRegexp || fileRegexp.test(fileName))) {
callback(fileName)
next()
} else {
next()
}
}
}
function next() {
if (--counter === 0) {
done(null)
}
}
}
function errorProxy(errorHandler, callback) {
return proxy
function proxy(err) {
if (err) {
return errorHandler(err)
}
return callback.apply(this, arguments)
}
}
var iterateFiles = require("fileIterator"),
path = require("path")
// Load all javascript files in the test folder or any of their sub folders
iterateFiles(path.join(process.cwd(), "./test"), function (fileName) {
// run code for each recursively found js file
}, function (err) {
// run code when all files have been found recursively
}, /.js$/)
@tommedema
Copy link
Author

tommedema commented May 13, 2012

Updated not to default to .js but simply allow all files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment