mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
41 lines
998 B
JavaScript
41 lines
998 B
JavaScript
import { readdir, readFile } from "node:fs/promises";
|
|
import isValidUTF8 from "utf-8-validate";
|
|
|
|
let queue = ["../.."];
|
|
let files = {};
|
|
let count = 0;
|
|
|
|
while (queue.length) {
|
|
const entries = await Promise.all(
|
|
queue.slice(0, 100).map((path) => readdir(path, { withFileTypes: true })),
|
|
);
|
|
for (let i = 0; i < entries.length; ++i) {
|
|
for (const entry of entries[i]) {
|
|
if (entry.isDirectory()) {
|
|
queue.push(`${queue[i]}/${entry.name}`);
|
|
} else if (entry.isFile() && entry.name.endsWith(".dm")) {
|
|
files[`${queue[i]}/${entry.name}`] = true;
|
|
}
|
|
}
|
|
}
|
|
queue = queue.slice(entries.length);
|
|
}
|
|
|
|
files = Object.keys(files);
|
|
|
|
while (files.length) {
|
|
const queue = files.slice(0, 100);
|
|
const buffers = await Promise.all(queue.map((path) => readFile(path)));
|
|
for (let i = 0; i < queue.length; ++i) {
|
|
if (!isValidUTF8(buffers[i])) {
|
|
console.log(queue[i]);
|
|
++count;
|
|
}
|
|
}
|
|
files = files.slice(100);
|
|
}
|
|
|
|
if (count) {
|
|
process.exit(1);
|
|
}
|