vils
Version:
Recursively outputs file paths and contents in various formats
39 lines (38 loc) • 1.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.walk = walk;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
async function walk(config) {
const results = [];
let hadError = false;
async function recurse(dir) {
const entries = await fs_extra_1.default.readdir(dir, { withFileTypes: true });
for (const entry of entries) {
const full = path_1.default.join(dir, entry.name);
const rel = path_1.default.relative(config.source, full) || entry.name;
if (config.ignore && config.ignore.some(pattern => typeof pattern === 'string' ? rel.startsWith(pattern) : pattern.test(rel)))
continue;
if (entry.isDirectory()) {
await recurse(full);
}
else if (entry.isFile()) {
try {
const data = await fs_extra_1.default.readFile(full, 'utf-8');
results.push({ relativePath: rel, content: data });
}
catch (err) {
hadError = true;
results.push({ relativePath: rel, content: { error: err.message } });
}
}
}
}
await recurse(path_1.default.resolve(config.source));
if (hadError)
process.exitCode = 1;
return results;
}