sysplus 0.1.0

A bright, professional system info CLI written in Rust.
use sysinfo::{System, RefreshKind, CpuRefreshKind, MemoryRefreshKind, Disks};
use colored::*;
use std::process;

fn main() {
    // Initialize system info
    let mut sys = System::new_with_specifics(
        RefreshKind::new()
            .with_cpu(CpuRefreshKind::everything())
            .with_memory(MemoryRefreshKind::everything()),
    );
    sys.refresh_all();

    // Clear terminal
    print!("\x1B[2J\x1B[1;1H");

    // SYSPLUS ASCII Logo
    println!("{}", r#"
   ███████╗██╗   ██╗███████╗██████╗ ██╗     ██╗   ██╗
   ██╔════╝██║   ██║██╔════╝██╔══██╗██║     ╚██╗ ██╔╝
   █████╗  ██║   ██║█████╗  ██████╔╝██║      ╚████╔╝ 
   ██╔══╝  ██║   ██║██╔══╝  ██╔═══╝ ██║       ╚██╔╝  
   ██║     ╚██████╔╝███████╗██║     ███████╗   ██║   
   ╚═╝      ╚═════╝ ╚══════╝╚═╝     ╚══════╝   ╚═╝   
                 Made by Draken
"#.bright_red().bold());

    println!("{}", "════════════════════════════════════════════════════════".bright_white());

    // CPU Section
    println!("\n{}", "🧠 CPU USAGE".bold().bright_yellow());
    for (i, cpu) in sys.cpus().iter().enumerate() {
        let usage = cpu.cpu_usage();
        let color = if usage > 80.0 {
            usage.to_string().bright_red()
        } else if usage > 50.0 {
            usage.to_string().bright_yellow()
        } else {
            usage.to_string().bright_green()
        };
        println!(
            "   {} {}{}%",
            "".bright_black(),
            format!("CPU {}", i).bright_white().bold(),
            color
        );
    }

    // Memory Section
    println!("\n{}", "💾 MEMORY INFO".bold().bright_magenta());
    let total_mem = sys.total_memory() / 1024;
    let used_mem = sys.used_memory() / 1024;
    let mem_percent = (used_mem as f64 / total_mem as f64) * 100.0;
    let mem_color = if mem_percent > 80.0 {
        mem_percent.to_string().bright_red()
    } else if mem_percent > 50.0 {
        mem_percent.to_string().bright_yellow()
    } else {
        mem_percent.to_string().bright_green()
    };
    println!("   {} Total Memory: {} MB", "".bright_black(), total_mem.to_string().bright_white());
    println!("   {} Used Memory : {} MB ({}%)", "".bright_black(), used_mem.to_string().bright_white(), mem_color);

    // Disk Section
    println!("\n{}", "💽 DISK DETAILS".bold().bright_cyan());
    let disks = Disks::new_with_refreshed_list();
    if disks.is_empty() {
        println!("   {} No disks detected!", "".bright_black());
    } else {
        for disk in disks.list() {
            println!(
                "   {} {} ({}) — Avail: {} MB",
                "".bright_black(),
                disk.name().to_string_lossy().bright_white().bold(),
                disk.file_system().to_string_lossy().bright_yellow(),
                (disk.available_space() / 1024 / 1024).to_string().bright_green()
            );
        }
    }

    // Uptime Section
    println!("\n{}", "⏱️ SYSTEM INFO".bold().bright_blue());
    let uptime = System::uptime();
    let hours = uptime / 3600;
    let minutes = (uptime % 3600) / 60;
    println!(
        "   {} Uptime: {}h {}m",
        "".bright_black(),
        hours.to_string().bright_white().bold(),
        minutes.to_string().bright_white().bold()
    );

    // Footer
    println!("\n{}", "════════════════════════════════════════════════════════".bright_white());
    println!("{}", "🔥 SYSPLUS by Draken 🔥".bright_red().bold().italic());
    println!("{}", "════════════════════════════════════════════════════════".bright_white());

    process::exit(0);
}