46 lines
1.7 KiB
JavaScript
46 lines
1.7 KiB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
/**
|
|
* Recursively read the contents of a directory.
|
|
*
|
|
* @param targetDir Absolute or relative path of the directory to scan. All returned paths will be relative to this
|
|
* directory.
|
|
* @returns Array holding all relative paths
|
|
* @deprecated This function will be removed in the next major version.
|
|
*/
|
|
function deepReadDirSync(targetDir) {
|
|
const targetDirAbsPath = path.resolve(targetDir);
|
|
|
|
if (!fs.existsSync(targetDirAbsPath)) {
|
|
throw new Error(`Cannot read contents of ${targetDirAbsPath}. Directory does not exist.`);
|
|
}
|
|
|
|
if (!fs.statSync(targetDirAbsPath).isDirectory()) {
|
|
throw new Error(`Cannot read contents of ${targetDirAbsPath}, because it is not a directory.`);
|
|
}
|
|
|
|
// This does the same thing as its containing function, `deepReadDirSync` (except that - purely for convenience - it
|
|
// deals in absolute paths rather than relative ones). We need this to be separate from the outer function to preserve
|
|
// the difference between `targetDirAbsPath` and `currentDirAbsPath`.
|
|
const deepReadCurrentDir = (currentDirAbsPath) => {
|
|
return fs.readdirSync(currentDirAbsPath).reduce((absPaths, itemName) => {
|
|
const itemAbsPath = path.join(currentDirAbsPath, itemName);
|
|
|
|
if (fs.statSync(itemAbsPath).isDirectory()) {
|
|
return absPaths.concat(deepReadCurrentDir(itemAbsPath));
|
|
}
|
|
|
|
absPaths.push(itemAbsPath);
|
|
return absPaths;
|
|
}, []);
|
|
};
|
|
|
|
return deepReadCurrentDir(targetDirAbsPath).map(absPath => path.relative(targetDirAbsPath, absPath));
|
|
}
|
|
|
|
exports.deepReadDirSync = deepReadDirSync;
|
|
//# sourceMappingURL=utils.js.map
|