libscu 3.0.2

crate for fetching software/hardware info on Unix-like OSs
Documentation
// Required feature: dmi

use libscu::hardware::dmi;

const PROP_LIST: [dmi::Property; 22] = [
    dmi::Property::BiosDate,
    dmi::Property::BiosRelease,
    dmi::Property::BiosVendor,
    dmi::Property::BiosVersion,
    dmi::Property::BoardAssetTag,
    dmi::Property::BoardName,
    dmi::Property::BoardSerial,
    dmi::Property::BoardVendor,
    dmi::Property::BoardVersion,
    dmi::Property::ChassisAssetTag,
    dmi::Property::ChassisSerial,
    dmi::Property::ChassisType,
    dmi::Property::ChassisVendor,
    dmi::Property::ChassisVersion,
    dmi::Property::ECFirmwareRelease,
    dmi::Property::ProductFamily,
    dmi::Property::ProductName,
    dmi::Property::ProductSerial,
    dmi::Property::ProductSKU,
    dmi::Property::ProductUUID,
    dmi::Property::ProductVersion,
    dmi::Property::SysVendor,
];

fn chassis_type(value: &str) {
    if let Some(chassis_type) = value.parse().ok().map(dmi::ChassisType::from_value) {
        println!("Chassis type: {chassis_type:?}");
    }
}

fn main() {
    for property in PROP_LIST {
        match dmi::DMI::get_property(property) {
            Ok(value) => {
                println!("{property:?}: {value}");
                if property == dmi::Property::ChassisType {
                    chassis_type(&value);
                }
            }
            Err(error) => {
                eprintln!("[ERROR] {property:?}: {error}")
            }
        }
    }
}