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}")
}
}
}
}