UNPKG

peter

Version:
60 lines (51 loc) 1.38 kB
/** * @file src/utils/walk-directory.js * @author Ryan Rossiter, ryan@kingsds.network * @date July 2020 * * This utility function will recursively find all files in the * provided directory. */ 'use strict'; const fs = require('fs'); const path = require('path'); /** * @param {string} outerDir * @returns {string[]} */ exports.walkDirectorySync = function walkDirectorySync(outerDir) { let seen = []; function walk(dir) { var filenames = []; for (let dent of fs.readdirSync(dir, { withFileTypes: true })) { let fullname = path.join(dir, dent.name); let isDir = dent.isDirectory() || (dent.isSymbolicLink() && fs.statSync(fullname).isDirectory()); if (dent.isFIFO() || dent.isSocket() || dent.isCharacterDevice() || dent.isBlockDevice()) continue; if (!isDir) filenames.push(fullname); else { try { let dirname = path.resolve(dir, dent.name); if (seen.indexOf(dirname) === -1) /* handle cycles */ { seen.push(dirname); for (let filename of walk(dirname)) filenames.push(filename); } } catch(e) { console.error(e.message); } } } return filenames; } return walk(path.resolve(process.cwd(), outerDir)); }