aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.zig7
-rw-r--r--util/generate_html.zig (renamed from util/website.zig)33
-rw-r--r--util/lighttpd.conf2
-rw-r--r--util/pages.zig16
4 files changed, 41 insertions, 17 deletions
diff --git a/build.zig b/build.zig
index 7f8dec1..c4a149f 100644
--- a/build.zig
+++ b/build.zig
@@ -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;
+ }
+};