diff options
| author | Robert Günzler <r@gnzler.io> | 2026-09-22 23:36:51 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2026-09-22 23:37:40 +0200 |
| commit | eb21de59dbd11e1bc46a552a840b25af582208be (patch) | |
| tree | 6c4a2d2d20248f1c6b81ec038eb272ba54d00130 /src | |
| parent | 783466202c4266455009a11004ff2081400cc7b4 (diff) | |
| download | site-eb21de59dbd11e1bc46a552a840b25af582208be.tar.gz | |
initial feed support
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | src/inc/meta.feed.txt | 2 | ||||
| -rw-r--r-- | src/main.zig | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/inc/meta.feed.txt b/src/inc/meta.feed.txt new file mode 100644 index 0000000..0cf2019 --- /dev/null +++ b/src/inc/meta.feed.txt @@ -0,0 +1,2 @@ +2025-05-14 | a post about porta | {[$porta]} +2024-01-01 | about me | {[$about]} diff --git a/src/main.zig b/src/main.zig index 1c62501..219bf1d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -167,6 +167,9 @@ const Builder = struct { if (std.mem.startsWith(u8, source_stem, "meta.tilde")) { return try self.metaTilde(io, gpa); } + if (std.mem.startsWith(u8, source_stem, "meta.feed")) { + return try self.metaFeed(io, gpa); + } // target file const target_path = try std.fmt.allocPrint(gpa, "{s}.html", .{source_stem}); @@ -387,6 +390,23 @@ const Builder = struct { try self.finalize(gpa, target_fd); log.debug("{s}: done", .{self.source.path}); } + + // TODO: could also be a generic way to allow arbitrary templated files + fn metaFeed(self: *Builder, io: Io, gpa: Allocator) !void { + const source_stem = std.fs.path.basename(self.source.path)[5..]; // trim "meta." + log.debug("meta.feed : {s}", .{source_stem}); + + const target_fd = try self.target_dir.createFile(io, source_stem, .{ .lock = .exclusive }); + defer target_fd.close(io); + if (try targetExists(io, gpa, target_fd, self.root_dir)) return; + + var buffer: [BUFFER_SIZE]u8 = undefined; + var writer = target_fd.writer(io, &buffer); + + try self.inject(io, gpa, self.source, &writer.interface); + try self.finalize(gpa, target_fd); + log.debug("{s}: done", .{self.source.path}); + } }; // helpers |