15 releases (8 breaking)
0.9.1 | Jul 9, 2024 |
---|---|
0.8.4 | Jul 13, 2023 |
0.7.2 | Jul 10, 2023 |
#1202 in Encoding
2,120 downloads per month
Used in cargo-sbom
12KB
80 lines
serde-spdx
This crate provides a type safe serde compatible SPDX format. It is intended for use in Rust code which may need to read or write SPDX files.
The latest documentation can be found here.
serde is a popular serialization framework for Rust. More information can be found on the official repository: https://github.com/serde-rs/serde
SDPX is an industry standard format for maintaining a Software Bill of Materials (SBOM). More information can be found on the official website: https://spdx.dev/.
Usage
For most cases, simply use the root spdx::v_2_3::Spdx struct with [serde] to read and write to and from the struct.
Example
use serde_spdx::spdx::v_2_3::Spdx;
let data = fs::read_to_string("sbom.spdx.json");
let spdx: Spdx = serde_json::from_str(&data).unwrap();
Because many of the spdx::v_2_3::Spdx structures contain a lot of optional fields, it is often convenient to use the builder pattern to contstruct these structs. Each structure has a builder with a default.
Example
use serde_spdx::spdx::v_2_3::SpdxCreationInfoBuilder;
let creation_info = SpdxCreationInfoBuilder::default()
.created("created")
.creators(vec![])
.build()
.unwrap();
Internal Implementation Details
The root struct is automatically generated from the parsed SPDX JSON schema, this is done at build time (via the buildscript).
License: MIT
Dependencies
~1.3–2.4MB
~48K SLoC