#![allow(unused_crate_dependencies)]
use bare_types::sys::{Arch, Distro, KernelVersion, OsType, OsVersion, Pid, Username};
fn main() {
println!("=== bare-types System Info demo ===\n");
println!("Architecture:");
let arch = Arch::current();
println!(" Current: {}", arch);
println!(" Is 64-bit: {}", arch.is_64_bit());
println!(" Is 32-bit: {}", arch.is_32_bit());
println!(" Is x86: {}", arch.is_x86());
println!(" Is ARM: {}", arch.is_arm());
println!(" Is RISC-V: {}", arch.is_riscv());
println!(" Is WASM: {}", arch.is_wasm());
println!(" Pointer width: {} bits", arch.pointer_width());
println!("\nOperating System:");
let os = OsType::current();
println!(" Current: {}", os);
println!(" Is Unix: {}", os.is_unix());
println!(" Is Windows: {}", os.is_windows());
println!(" Is BSD: {}", os.is_bsd());
println!(" Is mobile: {}", os.is_mobile());
println!(" Is desktop: {}", os.is_desktop());
println!(" Family: {}", os.family());
println!("\nOS Version:");
let os_ver: OsVersion = "22.04.3".parse().expect("Valid version");
println!(" Version: {}", os_ver);
println!(" Major: {}", os_ver.major());
println!(" Minor: {}", os_ver.minor());
println!(" Patch: {:?}", os_ver.patch());
println!(" Is major release: {}", os_ver.is_major_release());
println!("\nKernel Version:");
let kernel: KernelVersion = "6.8.0-40-generic".parse().expect("Valid kernel");
println!(" Version: {}", kernel);
println!(" Major: {}", kernel.major());
println!(" Minor: {}", kernel.minor());
println!(" Patch: {}", kernel.patch());
println!(" Release: {:?}", kernel.release());
println!(" Is stable: {}", kernel.is_stable());
println!(" Is development: {}", kernel.is_development());
println!(" Is LTS: {}", kernel.is_lts());
println!("\nDistribution:");
let distro: Distro = "Ubuntu".parse().expect("Valid distro");
println!(" Distro: {}", distro);
println!(" Is Debian-based: {}", distro.is_debian_based());
println!(" Is Red Hat-based: {}", distro.is_redhat_based());
println!(" Is Arch-based: {}", distro.is_arch_based());
println!(" Is rolling release: {}", distro.is_rolling_release());
println!(" Is LTS: {}", distro.is_lts());
println!("\nUser Management:");
let username: Username = "www-data".parse().expect("Valid username");
println!(" Username: {}", username);
println!(" Is system user: {}", username.is_system_user());
println!(" Is service account: {}", username.is_service_account());
println!("\nProcess ID:");
let pid: Pid = 1234.try_into().expect("Valid PID");
println!(" PID: {}", pid);
let init: Pid = 1.try_into().expect("Valid PID");
println!(" PID 1 is init: {}", init.is_init());
println!(" PID 1234 is system process: {}", pid.is_system_process());
println!("\nAll types are:");
println!(" - Compile-time constants for current() methods");
println!(" - Zero-cost abstractions");
println!(" - Fully no_std compatible");
println!(" - Type-safe with validation at construction");
}