diff options
| author | Rosa <rosaontheweb@proton.me> | 2026-05-11 16:31:43 -0400 |
|---|---|---|
| committer | Rosa <rosaontheweb@proton.me> | 2026-05-11 16:31:43 -0400 |
| commit | 6143a710c142cf6704527ae32a7c90c02e83fe4a (patch) | |
| tree | bebd50bd9c160fe6fdf12bbd14b4f512d84c047e /util | |
| parent | 710bfe5ddb769d9c6f15497928638f1aed3bc45a (diff) | |
start work on zig build system
Diffstat (limited to '')
| -rw-r--r-- | util/website.zig | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/util/website.zig b/util/website.zig new file mode 100644 index 0000000..837a51c --- /dev/null +++ b/util/website.zig @@ -0,0 +1,37 @@ +const std = @import("std"); + +pub fn main(init: std.process.Init) !void { + const sources_dir = try std.Io.Dir.cwd().createDirPathOpen(init.io, "src", .{}); + defer sources_dir.close(init.io); + const templates_dir = try sources_dir.createDirPathOpen(init.io, "templates", .{ .open_options = .{ .iterate = true } }); + defer templates_dir.close(init.io); + const pages_dir = try sources_dir.createDirPathOpen(init.io, "pages", .{ .open_options = .{ .iterate = true } }); + defer pages_dir.close(init.io); + const out_dir = try std.Io.Dir.cwd().createDirPathOpen(init.io, "html-out", .{}); + defer out_dir.close(init.io); + const static_dir = try sources_dir.createDirPathOpen(init.io, "static", .{ .open_options = .{ .iterate = true } }); + defer static_dir.close(init.io); + + try copyStaticFiles(init.io, init.gpa, static_dir, out_dir); +} + +fn copyStaticFiles(io: std.Io, ally: std.mem.Allocator, sources: std.Io.Dir, out: std.Io.Dir) !void { + var walker = try sources.walk(ally); + defer walker.deinit(); + while (try walker.next(io)) |entry| { + switch (entry.kind) { + .file, .sym_link => { + std.debug.print("Copying static file {s}...\n", .{entry.basename}); + try entry.dir.copyFile(entry.basename, out, entry.basename, io, .{}); + }, + + .directory => { + const new_out = try out.createDirPathOpen(io, entry.basename, .{ .open_options = .{ .iterate = true } }); + defer new_out.close(io); + try copyStaticFiles(io, ally, sources, out); + }, + + else => {}, + } + } +} |
