diff --git a/genealogos/src/cyclonedx/mod.rs b/genealogos/src/cyclonedx/mod.rs index 0ef64a5..4b83665 100644 --- a/genealogos/src/cyclonedx/mod.rs +++ b/genealogos/src/cyclonedx/mod.rs @@ -1,3 +1,7 @@ +//! # CycloneDX +//! +//! This module contains the `cyclonedx` module, which is responsible for providing a uniform interface for generating CycloneDX output. + mod version; use crate::Result; @@ -6,11 +10,15 @@ pub use version::Version; use crate::model::Model; +#[derive(Debug, Clone)] +/// Combines the two CycloneDX versions into a single enum pub enum CycloneDX { V1_4(cyclonedx::v_1_4::CycloneDx), V1_5(cyclonedx::v_1_5::CycloneDx), } +/// Converts a `Model` into a `CycloneDX` struct +/// `From` was not implemented for `Model` and `CycloneDX` because of the CycloneDX version impl CycloneDX { pub(crate) fn from_model(model: Model, version: Version) -> Result { match version { @@ -20,6 +28,8 @@ impl CycloneDX { } } +/// Serializes a `CycloneDX` struct into a CycloneDX JSON string +/// We dispatch to the correct version here, removing the overhead of the CycloneDX enum impl serde::Serialize for CycloneDX { fn serialize( &self, diff --git a/genealogos/src/cyclonedx/version.rs b/genealogos/src/cyclonedx/version.rs index 403258e..d819f25 100644 --- a/genealogos/src/cyclonedx/version.rs +++ b/genealogos/src/cyclonedx/version.rs @@ -1,3 +1,8 @@ +//! CycloneDX version enum +//! +//! This module contains the `Version` enum, which represents the CycloneDX version to use +//! when generating CycloneDX output. + use clap::ValueEnum; #[derive(Debug, Clone)] @@ -6,6 +11,8 @@ pub enum Version { V1_5, } +/// This trait is used to convert a `Version` into a `PossibleValue` for clap +/// And ensures that clap can display the possible values for `Version` impl ValueEnum for Version { fn value_variants<'a>() -> &'a [Self] { &[Version::V1_4, Version::V1_5]