ceci-core
Version:
A Go-inspired async library based on ES6 generators
34 lines (24 loc) • 810 B
JavaScript
var fs = require('fs');
var path = require('path');
var cc = require('../lib/index');
var tree = function(base, name, prefix) {
var newbase = path.resolve(base, name);
var subtree = function(name) { return tree(newbase, name, prefix + ' '); }
return cc.go(function*() {
var stat = yield cc.nbind(fs.lstat)(newbase);
if (stat.isDirectory()) {
var header = prefix + name + '/';
var entries = yield cc.nbind(fs.readdir)(newbase);
var results = yield cc.join(entries.map(subtree));
return [].concat.apply(header, results);
} else {
return [prefix + name];
}
});
};
var location = process.argv[2].replace(/\/+$/, '');
cc.top(cc.go(function*() {
var results = yield tree('.', location, '');
console.log(results.join('\n'));
}));
;