diff options
Diffstat (limited to 'src/global.zig')
-rw-r--r-- | src/global.zig | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/src/global.zig b/src/global.zig index 26776e0e1..1fb3becea 100644 --- a/src/global.zig +++ b/src/global.zig @@ -24,6 +24,14 @@ pub const Output = struct { var stderr_stream: Source.StreamType = undefined; var stdout_stream: Source.StreamType = undefined; var stdout_stream_set = false; + + pub var terminal_size: std.os.winsize = .{ + .ws_row = 0, + .ws_col = 0, + .ws_xpixel = 0, + .ws_ypixel = 0, + }; + pub const Source = struct { pub const StreamType: type = brk: { if (isWasm) { @@ -84,6 +92,10 @@ pub const Output = struct { is_stdout_piped = !_source.stream.isTty(); is_stderr_piped = !_source.error_stream.isTty(); + if (!is_stderr_piped) { + // _ = std.c.ioctl(source.error_stream.handle, std.os.TIOCGWINSZ, &terminal_size); + } + stdout_stream = _source.stream; stderr_stream = _source.error_stream; } @@ -152,17 +164,38 @@ pub const Output = struct { } } - pub fn printElapsed(elapsed: f64) void { + inline fn printElapsedToWithCtx(elapsed: f64, comptime printerFn: anytype, comptime has_ctx: bool, ctx: anytype) void { switch (elapsed) { 0...1500 => { - Output.prettyError("<r><d>[<b>{d:>.2}ms<r><d>]<r>", .{elapsed}); + const fmt = "<r><d>[<b>{d:>.2}ms<r><d>]<r>"; + const args = .{elapsed}; + if (comptime has_ctx) { + printerFn(ctx, fmt, args); + } else { + printerFn(fmt, args); + } }, else => { - Output.prettyError("<r><d>[<b>{d:>.2}s<r><d>]<r>", .{elapsed / 1000.0}); + const fmt = "<r><d>[<b>{d:>.2}s<r><d>]<r>"; + const args = .{elapsed / 1000.0}; + + if (comptime has_ctx) { + printerFn(ctx, fmt, args); + } else { + printerFn(fmt, args); + } }, } } + pub fn printElapsedTo(elapsed: f64, comptime printerFn: anytype, ctx: anytype) void { + printElapsedToWithCtx(elapsed, printerFn, true, ctx); + } + + pub fn printElapsed(elapsed: f64) void { + printElapsedToWithCtx(elapsed, Output.prettyError, false, void{}); + } + pub fn printStartEnd(start: i128, end: i128) void { const elapsed = @divTrunc(end - start, @as(i128, std.time.ns_per_ms)); printElapsed(@intToFloat(f64, elapsed)); |