1use kdam::{BarExt, Column, RichProgress, Spinner, term, term::Colorizer, tqdm};
2use std::io::{IsTerminal, Result, stderr};
3
4fn main() -> Result<()> {
5 term::init(stderr().is_terminal());
6 term::hide_cursor()?;
7
8 let mut pb = RichProgress::new(
9 tqdm!(
10 total = 231231231,
11 unit_scale = true,
12 unit_divisor = 1024,
13 unit = "B"
14 ),
15 vec![
16 Column::Spinner(Spinner::new(
17 &["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"],
18 80.0,
19 1.0,
20 )),
21 Column::Text("[bold blue]?".to_owned()),
22 Column::Animation,
23 Column::Percentage(1),
24 Column::Text("•".to_owned()),
25 Column::CountTotal,
26 Column::Text("•".to_owned()),
27 Column::Rate,
28 Column::Text("•".to_owned()),
29 Column::RemainingTime,
30 ],
31 );
32
33 pb.write("download will begin in 5 seconds".colorize("bold red"))?;
34
35 while pb.pb.elapsed_time() <= 5.0 {
36 pb.refresh()?;
37 }
38
39 pb.replace(1, Column::Text("[bold blue]docker.exe".to_owned()));
40 pb.write("downloading docker.exe".colorize("bold cyan"))?;
41
42 let total_size = 231231231;
43 let mut downloaded = 0;
44
45 while downloaded < total_size {
46 let new = std::cmp::min(downloaded + 223211, total_size);
47 downloaded = new;
48 pb.update_to(new)?;
49 std::thread::sleep(std::time::Duration::from_millis(12));
50 }
51
52 pb.write("downloaded docker.exe".colorize("bold green"))?;
53 eprintln!();
54
55 Ok(())
56}