Skip to content

Instantly share code, notes, and snippets.

@steckel
Created May 17, 2012 04:28
Show Gist options
  • Save steckel/2716363 to your computer and use it in GitHub Desktop.
Save steckel/2716363 to your computer and use it in GitHub Desktop.
Additional node.js fs methods: fs.walk(dir,callback) and fs.walkSync(dir)
fs = require("fs")
fs.walk = (dir, done) ->
results = []
fs.readdir dir, (err, list) ->
done(err) if err
pending = list.length
done(null, results) unless pending
list.forEach (file) ->
file = dir + "/" + file
fs.stat file, (err, stat) ->
if stat and stat.isDirectory()
fs.walk file, (err, res) ->
results = results.concat(res)
done null, results unless --pending
else
results.push file
done null, results unless --pending
fs.walkSync = (dir) ->
results = []
files = fs.readdirSync dir
for file in files
file = dir + "/" + file
if fs.statSync(file).isDirectory()
res = fs.walkSync file
results = results.concat(res)
else
results.push file
results
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment