mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
refactor: Reimplement tool using SelectiveWalker
This skips directory trees where top-level directories do not match the defined ones
This commit is contained in:
parent
df394faf77
commit
ec4514def4
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user