-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_main.zig
35 lines (31 loc) · 1.17 KB
/
generate_main.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const std = @import("std");
pub fn main() !void {
var arena_state = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena_state.deinit();
const arena = arena_state.allocator();
const cwd = std.fs.cwd();
cwd.deleteFile("src/main.zig") catch {};
var main_file = try cwd.createFile("src/main.zig", .{});
var tree_dir = try cwd.openDir("src/ClockTrees", .{ .iterate = true });
var iter = tree_dir.iterate();
while (true) {
const file = try iter.next();
if (file) |entry| {
switch (entry.kind) {
.file => {
const name = entry.name;
if (std.mem.indexOf(u8, name, ".zig")) |_| {
const short_name = name[0..(name.len - 4)];
try main_file.writer().print("pub const @\"{s}\" = @import(\"ClockTrees/{s}\");\n\n", .{ short_name, name });
}
},
else => {},
}
continue;
}
break;
}
main_file.close();
var ch = std.process.Child.init(&[_][]const u8{ "zig", "fmt", "src/main.zig" }, arena);
_ = try ch.spawnAndWait();
}