use super::CollectMode;
#[cfg(target_os = "linux")]
pub mod linux;
#[cfg(target_os = "macos")]
pub mod macos;
#[cfg(target_os = "windows")]
pub mod windows;
#[derive(Debug, Clone, Default)]
pub struct PlatformInfo {
pub desktop_environment: Option<String>,
pub display_server: Option<String>,
pub windows_edition: Option<String>,
pub macos_codename: Option<String>,
pub boot_mode: Option<String>,
pub virtualization: Option<String>,
pub gpus: Vec<String>,
pub architecture: Option<String>,
pub machine_model: Option<String>,
pub cpu_core_topology: Option<String>,
pub terminal: Option<String>,
pub shell: Option<String>,
pub display_resolution: Option<String>,
pub battery: Option<String>,
pub zfs_health: Option<String>,
pub motherboard: Option<String>,
pub bios: Option<String>,
pub ram_slots: Option<String>,
pub locale: Option<String>,
pub encryption: Option<String>,
}
pub fn collect(mode: CollectMode) -> PlatformInfo {
#[cfg(target_os = "linux")]
{
linux::collect(mode)
}
#[cfg(target_os = "macos")]
{
macos::collect(mode)
}
#[cfg(target_os = "windows")]
{
windows::collect(mode)
}
#[cfg(not(any(target_os = "linux", target_os = "macos", target_os = "windows")))]
{
let _ = mode;
PlatformInfo::default()
}
}