diff options
| author | 2021-12-08 18:11:44 -0800 | |
|---|---|---|
| committer | 2021-12-16 19:18:51 -0800 | |
| commit | e66776a79f646cc80d48e9ac17b37e35b67ee086 (patch) | |
| tree | 016d7af571a86bd3526a4b34231394be3fe5f1e6 /src/global.zig | |
| parent | 3036cbe5527a81ad9991d9ace27640af2d57e645 (diff) | |
| download | bun-e66776a79f646cc80d48e9ac17b37e35b67ee086.tar.gz bun-e66776a79f646cc80d48e9ac17b37e35b67ee086.tar.zst bun-e66776a79f646cc80d48e9ac17b37e35b67ee086.zip | |
Slightly better progress bar
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)); |
