summaryrefslogtreecommitdiff
path: root/example/subcommands.zig
diff options
context:
space:
mode:
authorGravatar Jimmi Holst Christensen2025-07-22 10:44:11 +0200
committerGravatar Jimmi Holst Christensen2025-07-22 10:44:11 +0200
commit095409eb0421f0f970c246b371b39dab2ff912aa (patch)
tree08ed3d08575d8a3b2613874a01dc7f98312bf272 /example/subcommands.zig
parentUpdate to Zig 0.15.0-dev.1147 (diff)
downloadzig-clap-095409eb0421f0f970c246b371b39dab2ff912aa.tar.gz
zig-clap-095409eb0421f0f970c246b371b39dab2ff912aa.tar.xz
zig-clap-095409eb0421f0f970c246b371b39dab2ff912aa.zip
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.
Diffstat (limited to '')
-rw-r--r--example/subcommands.zig11
1 files changed, 3 insertions, 8 deletions
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 {
41 // not fully consumed. It can then be reused to parse the arguments for subcommands. 41 // not fully consumed. It can then be reused to parse the arguments for subcommands.
42 .terminating_positional = 0, 42 .terminating_positional = 0,
43 }) catch |err| { 43 }) catch |err| {
44 var buf: [1024]u8 = undefined; 44 try diag.reportToFile(.stderr(), err);
45 var stderr = std.fs.File.stderr().writer(&buf); 45 return err;
46 try diag.report(&stderr.interface, err);
47 return stderr.interface.flush();
48 }; 46 };
49 defer res.deinit(); 47 defer res.deinit();
50 48
@@ -79,10 +77,7 @@ fn mathMain(gpa: std.mem.Allocator, iter: *std.process.ArgIterator, main_args: M
79 .diagnostic = &diag, 77 .diagnostic = &diag,
80 .allocator = gpa, 78 .allocator = gpa,
81 }) catch |err| { 79 }) catch |err| {
82 var buf: [1024]u8 = undefined; 80 try diag.reportToFile(.stderr(), err);
83 var stderr = std.fs.File.stderr().writer(&buf);
84 try diag.report(&stderr.interface, err);
85 try stderr.interface.flush();
86 return err; // propagate error 81 return err; // propagate error
87 }; 82 };
88 defer res.deinit(); 83 defer res.deinit();