diff options
| -rw-r--r-- | build.zig | 7 | ||||
| -rw-r--r-- | util/generate_html.zig (renamed from util/website.zig) | 33 | ||||
| -rw-r--r-- | util/lighttpd.conf | 2 | ||||
| -rw-r--r-- | util/pages.zig | 16 |
4 files changed, 41 insertions, 17 deletions
@@ -4,7 +4,7 @@ pub fn build(b: *std.Build) void { const generate_html = b.addExecutable(.{ .name = "generate_html", .root_module = b.createModule(.{ - .root_source_file = b.path("util/website.zig"), + .root_source_file = b.path("util/generate_html.zig"), .target = b.graph.host, }), }); @@ -18,6 +18,11 @@ pub fn build(b: *std.Build) void { bundle_html.step.dependOn(b.getInstallStep()); run_bundle_html.dependOn(&bundle_html.step); + const serve = b.addSystemCommand(&[_][]const u8{ "lighttpd", "-Df", "util/lighttpd.conf" }); + const run_server = b.step("serve", "Run a local test server"); + serve.step.dependOn(b.getInstallStep()); + run_server.dependOn(&serve.step); + const publish_to_prod = b.step("publish", "Publish the website to production"); _ = publish_to_prod; } diff --git a/util/website.zig b/util/generate_html.zig index 837a51c..f1329ca 100644 --- a/util/website.zig +++ b/util/generate_html.zig @@ -1,17 +1,20 @@ const std = @import("std"); +const pages = @import("pages.zig"); 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 out_dir = try std.Io.Dir.cwd().createDirPathOpen(init.io, "html-out", .{}); + defer out_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); } @@ -19,19 +22,19 @@ fn copyStaticFiles(io: std.Io, ally: std.mem.Allocator, sources: std.Io.Dir, out 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, .{}); - }, + switch (entry.kind) { + .file, .sym_link => { + std.debug.print("Copying static file {s}...\n", .{entry.path}); + 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); - }, + .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 => {}, - } + else => {}, + } } } diff --git a/util/lighttpd.conf b/util/lighttpd.conf index 6c06da6..b4f012f 100644 --- a/util/lighttpd.conf +++ b/util/lighttpd.conf @@ -1,4 +1,4 @@ index-file.names = ( "index.html" ) server.bind = "127.0.0.1" -server.document-root = var.CWD + "/src" +server.document-root = var.CWD + "/html-out" server.port = 8888 diff --git a/util/pages.zig b/util/pages.zig new file mode 100644 index 0000000..13d62a1 --- /dev/null +++ b/util/pages.zig @@ -0,0 +1,16 @@ +const std = @import("std"); + +pub const Template = struct { + file: std.Io.File, + + pub fn init(io: std.Io, dir: std.Io.Dir, sub_path: []const u8) !@This() { + const file = try dir.openFile(io, sub_path, .{}); + return .{ .file = file }; + } + + pub fn replacePlaceholder(template: *Template, key: []const u8, content: []u8) void { + _ = template; + _ = key; + _ = content; + } +}; |
