sbomsleuth 0.1.9

Library to assess SBOM quality.
Documentation
use crate::check::{Components, Core};
use crate::license::Licenses;
use sbom_walker::Sbom;
use serde::{Deserialize, Serialize};
use spdx_rs::models::SPDX;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct Report {
    pub core: Core,
    pub components: Components,
    pub licenses: Licenses,
}

impl Report {
    pub fn run_with_spdx(self, spdx: SPDX) -> Result<Report, String> {
        let sbom = Sbom::Spdx(spdx);
        self.run(sbom)
    }
    pub fn run(mut self, sbom: Sbom) -> Result<Report, String> {
        log::trace!("Running report for SBOM: {:?}", &sbom);
        let core_instance = Core::default();
        self.core = core_instance.run(&sbom).unwrap();
        let components_instance = Components::default();
        self.components = components_instance.run(&sbom).unwrap();
        Ok(self)
    }
}

#[cfg(test)]
mod test {
    use crate::report::Report;
    use crate::validate::parse_sbom;

    #[test]
    fn test_check() {
        let sbom = parse_sbom("../etc/test-data/spdx/simple.json").unwrap();

        let report_instance = Report::default();

        let report = report_instance.run(sbom).unwrap();
        println!("{:?}", report);
    }
}