proofman-util 1.2.0-alpha

Low-level utilities (device buffers, timers, helpers) for the PIL2 proofman framework
Documentation
use colored::Colorize;
use sysinfo::System;

pub fn print_banner(extended: bool) {
    println!();
    println!("    {}{}", "Proofman v".bright_purple().bold(), env!("CARGO_PKG_VERSION").bright_purple().bold());
    let system_name = System::name().unwrap_or_else(|| "<unknown>".to_owned());
    let system_kernel = System::kernel_version().unwrap_or_else(|| "<unknown>".to_owned());
    let system_version = System::long_os_version().unwrap_or_else(|| "<unknown>".to_owned());
    println!(
        "{} {} {} ({})",
        format!("{: >12}", "System").bright_green().bold(),
        system_name,
        system_kernel,
        system_version
    );
    let system_hostname = System::host_name().unwrap_or_else(|| "<unknown>".to_owned());
    println!("{} {}", format!("{: >12}", "Hostname").bright_green().bold(), system_hostname);

    if extended {
        print_extended_banner();
    }
}

pub fn print_extended_banner() {
    let system = System::new_all();

    let system_cores =
        sysinfo::System::physical_core_count().map(|c| c.to_string()).unwrap_or_else(|| "Unknown".to_owned());
    let system_cores_brand = system.cpus()[0].brand();
    println!("{} {} cores ({})", format!("{: >12}", "CPU").bright_green().bold(), system_cores, system_cores_brand);

    let total_mem = system.total_memory() / 1_000_000_000;
    let available_mem = system.available_memory() / 1_000_000_000;
    println!(
        "{} {}GB total ({}GB available)",
        format!("{: >12}", "Mem").bright_green().bold(),
        total_mem,
        available_mem
    );

    println!(
        "{} {}",
        format!("{: >12}", "Loaded").bright_green().bold(),
        std::env::current_exe().unwrap().display().to_string().as_str()
    );
    println!("{} {}", format!("{: >12}", "Main PID").bright_green().bold(), std::process::id().to_string().as_str());
}