Skip to content

Commit 9e576f2

Browse files
committed
Add format field to the serialized data
1 parent 3496266 commit 9e576f2

4 files changed

Lines changed: 13 additions & 4 deletions

File tree

auditable-serde/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ use std::str::FromStr;
3636
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
3737
pub struct VersionInfo {
3838
pub packages: Vec<Package>,
39+
#[serde(default)]
40+
#[serde(skip_serializing_if = "is_default")]
41+
pub format: u32,
3942
}
4043

4144
/// A single package in the dependency tree
@@ -117,7 +120,7 @@ pub enum DependencyKind {
117120
Runtime,
118121
}
119122

120-
fn is_default<T: Default + PartialEq>(value: &T) -> bool {
123+
pub(crate) fn is_default<T: Default + PartialEq>(value: &T) -> bool {
121124
let default_value = T::default();
122125
value == &default_value
123126
}

auditable-serde/src/validation.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
use crate::{Package, VersionInfo};
1+
use crate::{Package, VersionInfo, is_default};
22
use serde::{Deserialize, Serialize};
33
use std::{convert::TryFrom, fmt::Display};
44

55
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
66
pub struct RawVersionInfo {
77
pub packages: Vec<Package>,
8+
#[serde(default)]
9+
#[serde(skip_serializing_if = "is_default")]
10+
pub format: u32,
811
}
912

1013
pub enum ValidationError {
@@ -36,6 +39,7 @@ impl TryFrom<RawVersionInfo> for VersionInfo {
3639
} else {
3740
Ok(VersionInfo {
3841
packages: v.packages,
42+
format: v.format,
3943
})
4044
}
4145
}
@@ -99,6 +103,7 @@ mod tests {
99103
let pkg1 = dummy_package(1, false, vec![0]);
100104
let raw = RawVersionInfo {
101105
packages: vec![pkg0, pkg1],
106+
format: 0,
102107
};
103108
assert!(VersionInfo::try_from(raw).is_err());
104109
}
@@ -109,6 +114,7 @@ mod tests {
109114
let pkg1 = dummy_package(1, false, vec![]);
110115
let raw = RawVersionInfo {
111116
packages: vec![pkg0, pkg1],
117+
format: 0,
112118
};
113119
assert!(VersionInfo::try_from(raw).is_ok());
114120
}

cargo-auditable/src/auditable_from_metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ pub fn encode_audit_data(
218218
package.dependencies.sort_unstable();
219219
}
220220
}
221-
Ok(VersionInfo { packages })
221+
Ok(VersionInfo { packages, format: 1 })
222222
}
223223

224224
fn strongest_dep_kind(deps: &[cargo_metadata::DepKindInfo]) -> PrivateDepKind {

cargo-auditable/src/sbom_precursor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ impl From<SbomPrecursor> for VersionInfo {
8989
}
9090
}
9191

92-
VersionInfo { packages }
92+
VersionInfo { packages, format: 8 }
9393
}
9494
}
9595

0 commit comments

Comments
 (0)