UNPKG

chainscript

Version:
62 lines (44 loc) 1.42 kB
'use strict'; exports.__esModule = true; exports['default'] = walkDir; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _promisify = require('./promisify'); var _promisify2 = _interopRequireDefault(_promisify); var readdir = _promisify2['default'](_fs2['default'].readdir); var lstat = _promisify2['default'](_fs2['default'].lstat); function walkDir(dir, filter, fileCb) { return readdir(dir).then(function (fileList) { var files = fileList.map(function (f) { return _path.join(dir, f); }); files = filter ? filter(files) : files; var next = function next() { var _again = true; _function: while (_again) { file = undefined; _again = false; if (files.length < 1) { return true; } var file = files.shift(); if (!file) { _again = true; continue _function; } return lstat(file).then(function (stats) { if (stats.isDirectory()) { return walkDir(file, filter, fileCb).then(next); } else if (!stats.isSymbolicLink() && fileCb) { return fileCb(file).then(next); } return next(); }); } }; return next(); }); } module.exports = exports['default'];