use std::thread;
use std::time::Duration;
use gilt::console::Console;
use gilt::progress::Progress;
fn main() {
let console = Console::builder().width(80).force_terminal(true).build();
let mut progress = Progress::new(Progress::default_columns())
.with_console(console)
.with_auto_refresh(false);
let task1 = progress.add_task("Downloading dataset.tar.gz", Some(1000.0));
let task2 = progress.add_task("Downloading model-weights.bin", Some(500.0));
let task3 = progress.add_task("Downloading config.json", Some(200.0));
progress.start();
let mut done1 = false;
let mut done2 = false;
let mut done3 = false;
loop {
if !done1 {
progress.advance(task1, 20.0);
if let Some(t) = progress.get_task(task1) {
if t.finished() {
done1 = true;
}
}
}
if !done2 {
progress.advance(task2, 8.0);
if let Some(t) = progress.get_task(task2) {
if t.finished() {
done2 = true;
}
}
}
if !done3 {
progress.advance(task3, 3.0);
if let Some(t) = progress.get_task(task3) {
if t.finished() {
done3 = true;
}
}
}
progress.refresh();
if done1 && done2 && done3 {
break;
}
thread::sleep(Duration::from_millis(50));
}
progress.stop();
println!("\nAll downloads complete!");
}