1 | var Promise = require('bluebird');
|
2 | var fs = Promise.promisifyAll(require('fs'));
|
3 | var path = require('path');
|
4 | var _ = require('lodash');
|
5 | var async = require('..').async;
|
6 | var await = require('..').await;
|
7 |
|
8 |
|
9 | var descendentFilePaths = async.iterable (function self(yield_, dir, recursive) {
|
10 |
|
11 | var files = await (fs.readdirSync(dir));
|
12 | var paths = _.map(files, function (file) { return path.join(dir, file); });
|
13 | var stats = await (_.map(paths, function (path) { return fs.statAsync(path); }));
|
14 |
|
15 | _.each(stats, function(stat, i) {
|
16 | if (stat.isFile()) yield_ (paths[i]);
|
17 | else if (recursive) self(yield_, paths[i], true);
|
18 | });
|
19 | });
|
20 |
|
21 |
|
22 | var program = async (function(dir) {
|
23 | var paths = descendentFilePaths(dir, true);
|
24 | paths.forEach(console.log);
|
25 | return 'Finished!';
|
26 | });
|
27 |
|
28 |
|
29 | console.log('running...');
|
30 | program(path.join(__dirname, '.'))
|
31 | .then(function (result) {
|
32 | console.log(result);
|
33 | })
|
34 | .catch(function(err) {
|
35 | console.log('----- rejected: -----');
|
36 | console.log(err);
|
37 | });
|