about summary refs log tree commit diff
path: root/src/gen.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-01-29 20:44:57 +0100
committerRobert Günzler <r@gnzler.io>2026-01-29 21:38:25 +0100
commitf0c07e7688a24ae2cb42ba26675b7fb9d15157c9 (patch)
tree79550d159fff05a2fdcff48de142126702fa701a /src/gen.zig
parent9dd7b684d504c2275c3ee999f661f4f40a2bb323 (diff)
downloadsite-f0c07e7688a24ae2cb42ba26675b7fb9d15157c9.tar.gz
remember generated paths
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'src/gen.zig')
-rw-r--r--src/gen.zig18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/gen.zig b/src/gen.zig
index c4d945c..3f360e4 100644
--- a/src/gen.zig
+++ b/src/gen.zig
@@ -7,6 +7,8 @@ const Context = @import("main.zig").Context;
 const log = std.log.scoped(.gen);
 
 pub fn generate(ctx: *Context) !void {
+    ctx.generated.clearRetainingCapacity();
+
     ctx.progress_start("generate");
     defer ctx.progress_end();
 
@@ -16,7 +18,7 @@ pub fn generate(ctx: *Context) !void {
 
     try genSite(ctx);
 
-    log.info("Generated {d} files.", .{ctx.generated});
+    log.info("Generated {d} files.", .{ctx.generated.items.len});
     log.info("Generated {d} tildes.", .{ctx.tilde});
 }
 
@@ -108,7 +110,6 @@ fn genSite(ctx: *Context) !void {
         log.debug("generating {s} at {s}", .{ p, rel_dstpath });
 
         const f = try fs.FileSwapper.createAt(ctx.allocator(), dstpath);
-        defer f.close();
 
         var buffer: [1024]u8 = undefined;
         var w = f.writer(&buffer);
@@ -117,7 +118,15 @@ fn genSite(ctx: *Context) !void {
         defer ctx.allocator().free(page_name);
 
         try build(ctx.allocator(), &w.interface, page_name, srcpath);
-        ctx.generated += 1;
+
+        f.close();
+
+        if (f.swapped.*) {
+            try ctx.generated.append(
+                ctx.allocator(),
+                try ctx.allocator().dupe(u8, dstpath),
+            );
+        }
     }
 }
 
@@ -299,8 +308,7 @@ fn inject(allocator: std.mem.Allocator, w: *std.Io.Writer, srcpath: []const u8)
         defer chunkw.clearRetainingCapacity(); // reset chunk
 
         _ = r.interface.streamDelimiter(&chunkw.writer, '\n') catch |err|
-            if (err == error.EndOfStream) break
-            else return err;
+            if (err == error.EndOfStream) break else return err;
 
         _ = r.interface.toss(1); // skip newline delimiter