Cs.fs.glob(path, function(err, filenames) { if (err) return done(err); if (!filenames) filenames = []; Cs.reduce(filenames, [], function(ret, filename, done) { if (!filename.match(/\.json$/)) return done(null, ret); //nothing to do filename = filename.slice(0, -5); // cut .json PackageInfo.find(filename, function(err, packageInfo) { if (err) return done(err); if (packageInfo) ret.push(packageInfo); return done(null, ret); }); })(done); });
}, function(packages, done) { Cs.debug('1: found: ' + packages.map(function(p) { return p.id; }).join(',') + ' name = ' + name); if (!name) return done(null, packages); // skip this filter Cs.reduce(packages, [], function(ret, packageInfo, done) { if (packageInfo.name().toLowerCase() === name) { if (!version || (packageInfo.version() === version)) { ret.push(packageInfo); } } done(null, ret); })(done); // if we require dependencies, then find all dependencies // note that at top we make sure dep is always false if not filtering // by name }, function(packages, done) {