use std::collections::HashMap;
use std::thread::sleep;
use std::time::Duration;
use parsli::{Line, LineStatus, Pool, Task};
fn main() {
let mut pool = Pool::new(4);
let dummy: Task<String> = Task::new(|name: String, _state: HashMap<String, String>, line: Line| {
line.update_message(LineStatus::Busy, "Preparing...".to_string());
sleep(Duration::from_millis(1000 + 10 * (rand::random::<u8>() as u64)));
if name != "llvm.fetch".to_string() {
Ok("This is the state result".to_string())
}
else {
Err("This task went terribly wrong".to_string())
}
});
pool.add_task("llvm.fetch", dummy.clone(), vec![]);
pool.add_task("clang.configure", dummy.clone(), vec!["llvm.fetch"]);
pool.add_task("compiler-rt.configure", dummy.clone(), vec!["llvm.fetch"]);
pool.add_task("clang.compile", dummy.clone(), vec!["clang.configure"]);
pool.add_task("compiler-rt.compile", dummy.clone(), vec!["compiler-rt.configure"]);
pool.add_task("clang.install", dummy.clone(), vec!["clang.compile"]);
pool.add_task("compiler-rt.install", dummy, vec!["compiler-rt.compile"]);
pool.start();
}