use std::io::{self, Write};
use std::thread::sleep;
use std::time::Duration;
use colored::*;
use super::*;
use crate::data_structs;
pub fn boot_animation(os: String, delay: u64) {
let mut stdout = io::stdout();
for i in 0..=3 {
print!("\rBooting into {}", os);
for _ in 0..i {
print!(".");
}
stdout.flush().expect("Failed to flush stdout");
sleep(Duration::from_millis(delay));
}
print!("\rBooted! ");
stdout.flush().expect("Failed to flush stdout");
print!("\n");
}
pub fn diagnostics(save: &save::Save) {
let cpus: data_structs::cpu::Config = hardware::load_cpu();
let rams: data_structs::ram::Config = hardware::load_ram();
let oses: data_structs::os::Config = hardware::load_os();
println!("{}", "Diagnostics".bold());
println!(" Currently Installed OS: {}", oses.OSes[save.os].Name.green().bold());
println!(" CPU: {} @ {}{}", cpus.CPUs[save.cpu].Name.green().bold(), cpus.CPUs[save.cpu].Clock_Mhz.to_string().green().bold(), "MHz".green().bold());
println!(" RAM: {}{} {}", rams.RAM[save.ram].Capacity.to_string().green().bold(), "KB".green().bold(), rams.RAM[save.ram].Technology.green().bold());
}