refactor: Reimplement tool using SelectiveWalker

This skips directory trees where top-level directories do not match the
defined ones
This commit is contained in:
Henry Kupty 2025-09-25 22:22:08 +02:00 committed by Ryan Liptak
parent df394faf77
commit ec4514def4

View File

@ -109,13 +109,31 @@ pub fn main() !void {
{ {
// Also add all new def and def.in files. // Also add all new def and def.in files.
var walker = try src_crt_dir.walk(arena); var walker = try src_crt_dir.walkSelectively(arena);
defer walker.deinit(); defer walker.deinit();
var fail = false; var fail = false;
while (try walker.next()) |entry| { while (try walker.next()) |entry| {
if (entry.kind != .file) continue; switch (entry.kind) {
.directory => {
switch (walker.depth()) {
1 => for (def_dirs) |p| {
if (std.mem.eql(u8, entry.basename, p)) {
try walker.enter(entry);
continue;
}
},
else => {
// The top-level directory was already validated
try walker.enter(entry);
continue;
},
}
},
.file => {},
else => continue,
}
const ok_ext = for (def_exts) |ext| { const ok_ext = for (def_exts) |ext| {
if (std.mem.endsWith(u8, entry.path, ext)) break true; if (std.mem.endsWith(u8, entry.path, ext)) break true;
@ -123,12 +141,6 @@ pub fn main() !void {
if (!ok_ext) continue; if (!ok_ext) continue;
const ok_prefix = for (def_dirs) |p| {
if (std.mem.startsWith(u8, entry.path, p)) break true;
} else false;
if (!ok_prefix) continue;
const blacklisted = for (blacklisted_defs) |item| { const blacklisted = for (blacklisted_defs) |item| {
if (std.mem.eql(u8, entry.basename, item)) break true; if (std.mem.eql(u8, entry.basename, item)) break true;
} else false; } else false;