this repo has no description

add: progress report

altagos.dev 995c3731 4ff9173b

verified
+21 -12
+2 -1
src/austin.zig
··· 82 82 return .{ .arena = arena }; 83 83 } 84 84 85 - pub fn parse(self: *Parser, raw_reader: anytype) !Profile { 85 + pub fn parse(self: *Parser, raw_reader: anytype, progress: *std.Progress.Node) !Profile { 86 86 var buffered_reader = std.io.bufferedReader(raw_reader); 87 87 var reader = buffered_reader.reader(); 88 88 ··· 102 102 var line_num: usize = 1; 103 103 while (true) : (line_num += 1) { 104 104 defer line.clearAndFree(); 105 + defer progress.completeOne(); 105 106 106 107 try reader.streamUntilDelimiter(line.writer(), '\n', null); 107 108
+19 -11
src/main.zig
··· 46 46 return; 47 47 } 48 48 49 + var progress = std.Progress.start(.{ .root_name = "Austin Converter" }); 50 + 49 51 var parser: austin.austin.Parser = .init(allocator); 50 52 var profile: austin.austin.Profile = undefined; 51 - if (options.positionals.len == 0) { 52 - profile = try parser.parse(std.io.getStdIn().reader()); 53 - } else { 54 - const path = std.fs.cwd().realpathAlloc(allocator, options.positionals[0]) catch |err| { 55 - std.log.err("Invalid file path ({}): {s}", .{ err, options.positionals[0] }); 56 - return; 57 - }; 58 - defer allocator.free(path); 59 53 60 - const file = try std.fs.openFileAbsolute(path, .{}); 61 - defer file.close(); 54 + { 55 + var node = progress.start("Parsing Austin file", 0); 56 + defer node.end(); 62 57 63 - profile = try parser.parse(file.reader()); 58 + if (options.positionals.len == 0) { 59 + profile = try parser.parse(std.io.getStdIn().reader(), &node); 60 + } else { 61 + const path = std.fs.cwd().realpathAlloc(allocator, options.positionals[0]) catch |err| { 62 + std.log.err("Invalid file path ({}): {s}", .{ err, options.positionals[0] }); 63 + return; 64 + }; 65 + defer allocator.free(path); 66 + 67 + const file = try std.fs.openFileAbsolute(path, .{}); 68 + defer file.close(); 69 + 70 + profile = try parser.parse(file.reader(), &node); 71 + } 64 72 } 65 73 66 74 std.log.info("num samples: {} - meta: {}", .{ profile.samples.len, profile.meta });