Skip to main content

provenant/output_schema/
extra_data.rs

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