progress

thread safe progress bar and spinner library
git clone git://brookjeynes.dev/bjeynes/progress.git
Log | Files | Refs | README | LICENSE

complex.zig (1131B)


      1 const std = @import("std");
      2 const ProgressSpinner = @import("progress").Spinner;
      3 
      4 pub fn main(init: std.process.Init) !void {
      5     var stdout_buf: [4096]u8 = undefined;
      6     var stdout_writer = std.Io.File.stdout().writer(init.io, &stdout_buf);
      7     var ps = ProgressSpinner.init(&stdout_writer, .{
      8         .description = "Task 1",
      9         .symbols = &[_]u21{ '⣾', '⣷', '⣯', '⣟', '⡿', '⢿', '⣻', '⣽' },
     10         .completion_character = '✓',
     11     });
     12 
     13     var iterations: usize = 0;
     14     while (!ps.isFinished()) {
     15         iterations += 1;
     16         try ps.render();
     17 
     18         if (iterations == 10) ps.updateDescription("Task 1.1");
     19         if (iterations == 13) ps.updateDescription("Task 1.2");
     20         if (iterations == 20) try ps.updateDescriptionNewline("Task 2.0");
     21         if (iterations == 23) try ps.updateDescriptionNewline("Task 3.0");
     22         if (iterations == 26) ps.updateDescription("Task 3.1");
     23         if (iterations == 30) try ps.updateDescriptionNewline("Task 4.0");
     24         if (iterations == 40) try ps.finish();
     25 
     26         try std.Io.sleep(init.io, std.Io.Duration.fromMilliseconds(150), .awake);
     27     }
     28 }