From 095409eb0421f0f970c246b371b39dab2ff912aa Mon Sep 17 00:00:00 2001 From: Jimmi Holst Christensen Date: Tue, 22 Jul 2025 10:44:11 +0200 Subject: feat: Add `Diagnostic.reportToFile` The code for reporting errors became quite verbose after writegate. Reporting to stderr is very common, so this wrapper provides a default, buffered way to report to a file. --- example/subcommands.zig | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'example/subcommands.zig') diff --git a/example/subcommands.zig b/example/subcommands.zig index 644e371..7d9f5f1 100644 --- a/example/subcommands.zig +++ b/example/subcommands.zig @@ -41,10 +41,8 @@ pub fn main() !void { // not fully consumed. It can then be reused to parse the arguments for subcommands. .terminating_positional = 0, }) catch |err| { - var buf: [1024]u8 = undefined; - var stderr = std.fs.File.stderr().writer(&buf); - try diag.report(&stderr.interface, err); - return stderr.interface.flush(); + try diag.reportToFile(.stderr(), err); + return err; }; defer res.deinit(); @@ -79,10 +77,7 @@ fn mathMain(gpa: std.mem.Allocator, iter: *std.process.ArgIterator, main_args: M .diagnostic = &diag, .allocator = gpa, }) catch |err| { - var buf: [1024]u8 = undefined; - var stderr = std.fs.File.stderr().writer(&buf); - try diag.report(&stderr.interface, err); - try stderr.interface.flush(); + try diag.reportToFile(.stderr(), err); return err; // propagate error }; defer res.deinit(); -- cgit v1.2.3