use std::io; use std::process::Command; #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Report { pub blockdevices: Vec, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct BlockDev { pub name: String, #[serde(rename = "maj:min")] pub maj_min: String, pub rm: bool, pub size: String, pub ro: bool, #[serde(rename = "type")] pub dev_type: String, pub mountpoints: Vec>, #[serde(default)] pub children: Vec, } pub fn report() -> io::Result { let output = Command::new("lsblk").arg("--json").output()?; Ok(serde_json::from_slice(output.stdout.as_slice()).unwrap()) }