summaryrefslogtreecommitdiffstats
path: root/vendor/spdx-rs/src/models/package_information.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/spdx-rs/src/models/package_information.rs')
-rw-r--r--vendor/spdx-rs/src/models/package_information.rs94
1 files changed, 82 insertions, 12 deletions
diff --git a/vendor/spdx-rs/src/models/package_information.rs b/vendor/spdx-rs/src/models/package_information.rs
index c5d73fb3f..dde62f1de 100644
--- a/vendor/spdx-rs/src/models/package_information.rs
+++ b/vendor/spdx-rs/src/models/package_information.rs
@@ -76,8 +76,12 @@ pub struct PackageInformation {
pub source_information: Option<String>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#313-concluded-license>
- #[serde(rename = "licenseConcluded")]
- pub concluded_license: SpdxExpression,
+ #[serde(
+ rename = "licenseConcluded",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub concluded_license: Option<SpdxExpression>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#314-all-licenses-information-from-files>
#[serde(
@@ -88,8 +92,12 @@ pub struct PackageInformation {
pub all_licenses_information_from_files: Vec<String>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license>
- #[serde(rename = "licenseDeclared")]
- pub declared_license: SpdxExpression,
+ #[serde(
+ rename = "licenseDeclared",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub declared_license: Option<SpdxExpression>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#316-comments-on-license>
#[serde(
@@ -100,7 +108,12 @@ pub struct PackageInformation {
pub comments_on_license: Option<String>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#317-copyright-text>
- pub copyright_text: String,
+ #[serde(
+ rename = "copyrightText",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub copyright_text: Option<String>,
/// <https://spdx.github.io/spdx-spec/3-package-information/#318-package-summary-description>
#[serde(rename = "summary", skip_serializing_if = "Option::is_none", default)]
@@ -142,6 +155,30 @@ pub struct PackageInformation {
#[serde(skip_serializing_if = "Vec::is_empty", default)]
pub annotations: Vec<Annotation>,
+
+ #[serde(rename = "builtDate", skip_serializing_if = "Option::is_none", default)]
+ pub built_date: Option<String>,
+
+ #[serde(
+ rename = "releaseDate",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub release_date: Option<String>,
+
+ #[serde(
+ rename = "validUntilDate",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub valid_until_date: Option<String>,
+
+ #[serde(
+ rename = "primaryPackagePurpose",
+ skip_serializing_if = "Option::is_none",
+ default
+ )]
+ pub primary_package_purpose: Option<PrimaryPackagePurpose>,
}
impl Default for PackageInformation {
@@ -159,11 +196,11 @@ impl Default for PackageInformation {
package_checksum: Vec::new(),
package_home_page: None,
source_information: None,
- concluded_license: SpdxExpression::parse("NONE").expect("will always succeed"),
+ concluded_license: None,
all_licenses_information_from_files: Vec::new(),
- declared_license: SpdxExpression::parse("NONE").expect("will always succeed"),
+ declared_license: None,
comments_on_license: None,
- copyright_text: "NOASSERTION".to_string(),
+ copyright_text: None,
package_summary_description: None,
package_detailed_description: None,
package_comment: None,
@@ -171,6 +208,10 @@ impl Default for PackageInformation {
package_attribution_text: Vec::new(),
files: Vec::new(),
annotations: Vec::new(),
+ built_date: None,
+ release_date: None,
+ valid_until_date: None,
+ primary_package_purpose: None,
}
}
}
@@ -181,7 +222,7 @@ impl PackageInformation {
*id += 1;
Self {
package_name: name.to_string(),
- package_spdx_identifier: format!("SPDXRef-{}", id),
+ package_spdx_identifier: format!("SPDXRef-{id}"),
..Self::default()
}
}
@@ -263,6 +304,23 @@ pub enum ExternalPackageReferenceCategory {
Other,
}
+#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Copy)]
+#[serde(rename_all = "SCREAMING-KEBAB-CASE")]
+pub enum PrimaryPackagePurpose {
+ Application,
+ Framework,
+ Library,
+ Container,
+ OperatingSystem,
+ Device,
+ Firmware,
+ Source,
+ Archive,
+ File,
+ Install,
+ Other,
+}
+
#[cfg(test)]
mod test {
use std::fs::read_to_string;
@@ -432,7 +490,11 @@ mod test {
)
.unwrap();
assert_eq!(
- spdx.package_information[0].concluded_license,
+ spdx.package_information[0]
+ .concluded_license
+ .as_ref()
+ .unwrap()
+ .clone(),
SpdxExpression::parse("(LGPL-2.0-only OR LicenseRef-3)").unwrap()
);
}
@@ -459,7 +521,11 @@ mod test {
)
.unwrap();
assert_eq!(
- spdx.package_information[0].declared_license,
+ spdx.package_information[0]
+ .declared_license
+ .as_ref()
+ .unwrap()
+ .clone(),
SpdxExpression::parse("(LGPL-2.0-only AND LicenseRef-3)").unwrap()
);
}
@@ -481,7 +547,11 @@ mod test {
)
.unwrap();
assert_eq!(
- spdx.package_information[0].copyright_text,
+ spdx.package_information[0]
+ .copyright_text
+ .as_ref()
+ .unwrap()
+ .clone(),
"Copyright 2008-2010 John Smith".to_string()
);
}