about summary refs log tree commit diff
path: root/src/exe.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-01-17 17:17:09 +0100
committerRobert Günzler <r@gnzler.io>2026-01-29 21:05:23 +0100
commit00e8ec8f029d3fb248139bae366220d5b01e8cd8 (patch)
treede1fd513a87f612f58ff0da21a2257e60a38548d /src/exe.zig
parentf4dbf77e41f57c394448650690d1bb3b4973c30d (diff)
downloadsite-00e8ec8f029d3fb248139bae366220d5b01e8cd8.tar.gz
fix for zig 0.15
writergate

Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
-rw-r--r--src/exe.zig19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/exe.zig b/src/exe.zig
index 8624193..4d55c72 100644
--- a/src/exe.zig
+++ b/src/exe.zig
@@ -82,8 +82,11 @@ fn pandocWorker(ctx: *Context, page: []const u8) !void {
     const f = try fs.FileSwapper.createAt(ctx.allocator(), target_path);
     defer f.close();
 
+    var buffer: [1024]u8 = undefined;
+    var w = f.writer(&buffer);
+
     // open new scope to close the file swapper when we're done writing
-    try f.writer().print(
+    try w.interface.print(
         \\<!-- Generated file, you may edit and discard {s} :) -->
         \\
     ,
@@ -107,7 +110,7 @@ fn pandocWorker(ctx: *Context, page: []const u8) !void {
         "--strip-comments",
         "--output=-",
         source_path,
-    }, &env_map, f.writer().any());
+    }, &env_map, &w.interface);
 
     // swap now, we want to edit mtime
     try f.swap();
@@ -118,7 +121,7 @@ fn pandocWorker(ctx: *Context, page: []const u8) !void {
     try fs.setMtime(target_path, mtime);
 }
 
-pub fn captureStdout(ctx: *Context, argv: []const []const u8, env_map: ?*std.process.EnvMap, buf: std.io.AnyWriter) !void {
+pub fn captureStdout(ctx: *Context, argv: []const []const u8, env_map: ?*std.process.EnvMap, w: *std.Io.Writer) !void {
     const command = try std.mem.join(ctx.allocator(), " ", argv);
     defer ctx.allocator().free(command);
     const label = try std.fmt.allocPrint(ctx.allocator(), "running {s}", .{command});
@@ -127,14 +130,22 @@ pub fn captureStdout(ctx: *Context, argv: []const []const u8, env_map: ?*std.pro
     ctx.progress_start(label);
     defer ctx.progress_end();
 
+    log.debug("running {s}", .{command});
+
     var p = std.process.Child.init(argv, std.heap.page_allocator);
+    p.stdin_behavior = .Ignore;
     p.stdout_behavior = .Pipe;
+    p.stderr_behavior = .Ignore;
     p.progress_node = ctx.progress_nodes.getLast();
     p.env_map = env_map;
 
     try p.spawn();
 
-    try buf.writeFile(p.stdout.?);
+    var buffer: [1024]u8 = undefined;
+    var r = p.stdout.?.readerStreaming(&buffer);
+
+    _ = try w.sendFileAll(&r, .unlimited);
+    try w.flush();
 
     const result = try p.wait();
     _ = result;