MCPcopy
hub / github.com/yortus/asyncawait / countFiles

Function countFiles

comparison/countFiles/countFiles-callbacks.js:7–46  ·  view source on GitHub ↗
(dir, callback)

Source from the content-addressed store, hash-verified

5
6/** Returns the number of files in the given directory. */
7var countFiles = function (dir, callback) {
8
9 // Get all directory entries.
10 fs.readdir(dir, function (err, files) {
11 if (err) { callback(err); return; }
12 var paths = _.map(files, function (file) { return path.join(dir, file); });
13 (function getStatsInParallel(callback) {
14 var stats = [];
15 var remaining = paths.length;
16 if (remaining === 0) {
17
18 // Directory is empty.
19 callback(null, stats);
20 return;
21 } else {
22
23 // Get all file stats in parallel.
24 paths.forEach(function (path, i) {
25 fs.stat(path, function (err, stat) {
26 if (remaining === 0) return;
27 if (err) {
28 remaining = 0;
29 callback(err);
30 } else {
31 stats[i] = stat;
32 --remaining;
33 if (remaining === 0) callback(null, stats);
34 }
35 });
36 });
37 }
38 })(function (err, stats) {
39
40 // Count the files.
41 if (err) { callback(err); return; }
42 var result = _.filter(stats, function (stat) { return stat.isFile(); }).length;
43 callback(null, result);
44 });
45 });
46}
47
48
49module.exports = countFiles;

Callers

nothing calls this directly

Calls 6

joinMethod · 0.80
isFileMethod · 0.80
mapMethod · 0.65
forEachMethod · 0.65
filterMethod · 0.65
callbackFunction · 0.50

Tested by

no test coverage detected