diff options
| author | Robert Günzler <r@gnzler.io> | 2026-01-17 17:17:09 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2026-01-29 21:05:23 +0100 |
| commit | 00e8ec8f029d3fb248139bae366220d5b01e8cd8 (patch) | |
| tree | de1fd513a87f612f58ff0da21a2257e60a38548d /src/exe.zig | |
| parent | f4dbf77e41f57c394448650690d1bb3b4973c30d (diff) | |
| download | site-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.zig | 19 |
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; |