1 个不稳定版本
0.1.2 | 2021 年 3 月 23 日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#17 in #bom
61KB
1.5K SLoC
cyclonedx-rust
cyclonedx-rust 是一个简单的库,用于编码/解码 CycloneDx BOM
您可以使用以下方法从任何读取器类型进行编码和解码
解码
CycloneDX::decode(reader: R, format: CycloneDXFormatType,) -> Result<CycloneDX, CycloneDXDecodeError>
编码
CycloneDX::encode<(writer: W, dx: CycloneDX, format: CycloneDXFormatType,) -> Result<(), CycloneDXEncodeError>
运行 cargo docs --open
获取更详细的文档
lib.rs
:
#CycloneDx-Rust
CycloneDx-Rust 是一个用于编码和解码 CycloneDx 文件(XML 和 JSON 格式)的 1.2 规范的 Crate 库
要编码 CycloneDx,您可以构建结构,使用提供的 ::new() 方法,必要时传入参数,或者使用构建器模式。构建器模式在构建时创建,因此可能没有智能感应。然而,每个结构,例如
use cyclonedx_rust::CycloneDX;
CycloneDX::new(None, None, None, None);
可以按如下方式构建
use cyclonedx_rust::CycloneDXBuilder;
CycloneDXBuilder::default()
.metadata(None)
.components(None)
.services(None)
.dependencies(None)
.build();
编码
将 CycloneDX BoM 编码到文件的一个示例
use cyclonedx_rust::{CycloneDX, CycloneDXFormatType};
use std::io::BufWriter;
use std::fs::File;
let mut buffer = BufWriter::new(File::create("foo.txt").unwrap());
let cyclone_dx = CycloneDX::new(None, None, None, None);
CycloneDX::encode(&mut buffer, cyclone_dx, CycloneDXFormatType::XML);
解码
解码 CycloneDX BoM 的一个示例
use cyclonedx_rust::{CycloneDX, CycloneDXFormatType};
use std::fs::File;
use std::io::BufReader;
use std::path::PathBuf;
let mut test_folder = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_folder.push("resources/test/bom-1.2.xml");
let file = File::open(test_folder);
let mut reader = BufReader::new(file.unwrap());
let result: CycloneDX = CycloneDX::decode(reader, CycloneDXFormatType::XML).unwrap();
依赖项
~4–10MB
~100K SLoC