lfs 0.5.3

give information on mounted disks
use {
    lfs_core::*,
    serde_json::{
        json,
        Value,
    },
};

pub fn output_value(mounts: &[Mount]) -> Value {
    let mut jmounts = Vec::new();
    for mount in mounts {
        let stats = mount.stats.as_ref().map(|s| json!({
            "bsize": s.bsize,
            "blocks": s.blocks,
            "bavail": s.bavail,
            "bfree": s.bfree,
            "size": file_size::fit_4(s.size()),
            "used": file_size::fit_4(s.used()),
            "used-percent": format!("{:.0}%", 100.0*s.use_share()),
            "available": file_size::fit_4(s.available()),
        }));
        let disk = mount.disk.as_ref().map(|d| json!({
            "type": d.disk_type(),
            "rotational": d.rotational,
            "removable": d.removable,
        }));
        jmounts.push(json!({
            "id": mount.info.id,
            "dev": {
                "major": mount.info.dev.major,
                "minor": mount.info.dev.minor,
            },
            "fs": mount.info.fs,
            "fs-type": mount.info.fs_type,
            "mount-point": mount.info.mount_point,
            "disk": disk,
            "stats": stats,
        }));
    }
    Value::Array(jmounts)
}