diff options
| author | 2025-07-22 10:44:11 +0200 | |
|---|---|---|
| committer | 2025-07-22 10:44:11 +0200 | |
| commit | 095409eb0421f0f970c246b371b39dab2ff912aa (patch) | |
| tree | 08ed3d08575d8a3b2613874a01dc7f98312bf272 /example/subcommands.zig | |
| parent | Update to Zig 0.15.0-dev.1147 (diff) | |
| download | zig-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.zig | 11 |
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(); |