const fs = require("fs") const path = require("path") const promisify = fn => { return function () { let args = arguments; return new Promise(function (resolve, reject) { [].push.call(args, function (err, result) { if (err) { console.log(err) reject(err); } else { resolve(result); } }); fn.apply(null, args); }); } } const readdir = promisify(fs.readdir) const stat = promisify(fs.stat) const findFile = (dir = '.', cb) => { return readdir(dir).then(apps => { return Promise.all(apps.map(e => { let cPath = path.join(dir, e) return stat(cPath).then(state => { if (state.isDirectory()) { return findFile(cPath, cb) } else if (state.isFile()) { cb && cb(cPath) } }) })) }) } module.exports = {readdir, stat, findFile}