about summary refs log tree commit diff
path: root/src
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
parent9dd7b684d504c2275c3ee999f661f4f40a2bb323 (diff)
downloadsite-f0c07e7688a24ae2cb42ba26675b7fb9d15157c9.tar.gz
remember generated paths
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'src')
-rw-r--r--src/exe.zig2
-rw-r--r--src/gen.zig18
-rw-r--r--src/main.zig4
3 files changed, 17 insertions, 7 deletions
diff --git a/src/exe.zig b/src/exe.zig
index 37c20a7..c8b5b38 100644
--- a/src/exe.zig
+++ b/src/exe.zig
@@ -55,6 +55,8 @@ pub fn WaitPool(
 }
 
 pub fn runPandoc(ctx: *Context) !void {
+    ctx.generated.clearRetainingCapacity();
+
     ctx.progress_start("Processing markdown files");
     defer ctx.progress_end();
 
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
 
diff --git a/src/main.zig b/src/main.zig
index 35c5af4..d7cb0c4 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -5,8 +5,8 @@
 // https://github.com/hundredrabbits/100r.co/blob/main/src/main.c and his
 // personal site https://github.com/XXIIVV/Oscean
 
-const gen = @import("gen.zig");
 const exe = @import("exe.zig");
+const gen = @import("gen.zig");
 
 const std = @import("std");
 
@@ -28,7 +28,7 @@ pub const Context = struct {
     pages: std.ArrayListUnmanaged([]const u8) = .{},
     markdown: std.ArrayListUnmanaged([]const u8) = .{},
 
-    generated: usize = 0,
+    generated: std.ArrayListUnmanaged([]const u8) = .{},
     meta: usize = 0,
     tilde: usize = 0,