lib/tracy/src/cli/args/csv.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2 const tracy = @import("../../root.zig");
3 const types = @import("types.zig");
4
5 pub fn parse(args: []const []const u8) !types.ExportArgs {
6 if (args.len < 2) return error.InvalidArguments;
7 var parsed = types.ExportArgs{
8 .mode = tracy.csv.Export.fromName(args[0]) orelse return error.InvalidExport,
9 .path = args[1],
10 };
11 var index: usize = 2;
12 while (index < args.len) : (index += 1) {
13 if (std.mem.eql(u8, args[index], "--output")) {
14 index += 1;
15 if (index >= args.len) return error.InvalidArguments;
16 parsed.output = args[index];
17 } else {
18 return error.UnknownArgument;
19 }
20 }
21 return parsed;
22 }
23
24 test "export args parse output path" {
25 const parsed = try parse(&.{ "zones", "events.jsonl", "--output", "zones.csv" });
26 try std.testing.expectEqual(tracy.csv.Export.zones, parsed.mode);
27 try std.testing.expectEqualStrings("events.jsonl", parsed.path);
28 try std.testing.expectEqualStrings("zones.csv", parsed.output.?);
29 }