util.js 940 B

123456789101112131415161718192021222324252627282930
  1. var fs = require('fs'),
  2. path = require('path');
  3. this.mstat = function (dir, files, callback) {
  4. (function mstat(files, stats) {
  5. var file = files.shift();
  6. if (file) {
  7. fs.stat(path.join(dir, file), function (e, stat) {
  8. if (e) {
  9. callback(e);
  10. } else {
  11. mstat(files, stats.concat([stat]));
  12. }
  13. });
  14. } else {
  15. callback(null, {
  16. size: stats.reduce(function (total, stat) {
  17. return total + stat.size;
  18. }, 0),
  19. mtime: stats.reduce(function (latest, stat) {
  20. return latest > stat.mtime ? latest : stat.mtime;
  21. }, 0),
  22. ino: stats.reduce(function (total, stat) {
  23. return total + stat.ino;
  24. }, 0)
  25. });
  26. }
  27. })(files.slice(0), []);
  28. };