Skip to main content

provenant/output_schema/
extra_data.rs

1use serde::{Deserialize, Serialize};
2
3use super::license_index_provenance::OutputLicenseIndexProvenance;
4use super::system_environment::OutputSystemEnvironment;
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct OutputExtraData {
8    pub system_environment: OutputSystemEnvironment,
9    pub spdx_license_list_version: String,
10    pub files_count: usize,
11    pub directories_count: usize,
12    pub excluded_count: usize,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub license_index_provenance: Option<OutputLicenseIndexProvenance>,
15}
16
17impl From<&crate::models::ExtraData> for OutputExtraData {
18    fn from(value: &crate::models::ExtraData) -> Self {
19        Self {
20            system_environment: OutputSystemEnvironment::from(&value.system_environment),
21            spdx_license_list_version: value.spdx_license_list_version.clone(),
22            files_count: value.files_count,
23            directories_count: value.directories_count,
24            excluded_count: value.excluded_count,
25            license_index_provenance: value
26                .license_index_provenance
27                .as_ref()
28                .map(OutputLicenseIndexProvenance::from),
29        }
30    }
31}