scripts/utils/fileSystem.js (28 lines of code) (raw):
import { readdir } from 'fs/promises';
import path from 'path';
export async function listDirectories(path) {
const entries = await readdir(path, { withFileTypes: true })
return entries.filter(entry => entry.isDirectory()).map(entry => entry.name);
}
export async function listFiles(dirPath, params = {}) {
const files = await readdir(dirPath, { withFileTypes: true });
let output = []
for (let file of files) {
let filePath = path.join(dirPath, file.name);
if (file.isDirectory()) {
let subFiles = await listFiles(filePath, params);
output = [...output, ...subFiles];
} else {
output.push(filePath)
}
}
if (params.filter) {
output = output.filter(file => {
return !params.filter.includes(path.basename(file))
})
}
return output;
}
function isDirectory(path) {
return true;
// return lstatSync(path).isDirectory();
}